在js中使用变量进行计算时无法得到正确的结果
Cannot get correct result when using variables to do calculation in js
所以我试图创造一些 "app" 来培养我一周的 js 技能。它比看起来更难!但它非常有趣。所以,我遇到了我能想到的最奇怪的困难:
当我在计算到最后一行时使用普通数字时,结果是正常的,当两个变量之一存在时,计算非常非常错误(显然是错误的)。我搜索了很多解决方案,但没有任何帮助。
var Alankylosaurus_stats = {
hp: 4200,
armor: .3,
dmg: 900,
speed: 110,
crit: 5
};
var Allosinosaurus_stats = {
hp: 4500,
armor: .15,
dmg: 1500,
speed: 110,
crit: 20
};
function dinoStats(x) {
var y = parseFloat(document.getElementById('level_select_' + x).value);
var dif = 26 - y;
var dino = document.getElementById('dino_select_' + x).value;
console.log(dif);
if (dino === 'Alankylosaurus') {
document.getElementById('table_hp_' + x).innerHTML =
Math.round( Alankylosaurus_stats.hp / (1.05 ^ dif));
};
if (dino === 'Allosinosaurus') {
document.getElementById('table_hp_' + x).innerHTML =
Math.round( Allosinosaurus_stats.hp / (1.05 ^ dif));
};
};
<tr>
<td colspan="5">
<label for="level_select_left">Choose level:</label>
<select id="level_select_left" onchange="dinoStats('left')">
<option value="1">--Please choose--</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26" selected>26</option>
</select>
</td>
</tr>
<tr>
<td colspan="5">
<label for="dino_select_left">Choose Dino:</label>
<select id="dino_select_left" onchange="dinoPick('left')">
<option value="">--Please choose--</option>
<option value="Alankylosaurus">Alankylosaurus</option>
<option value="Allosinosaurus" selected>Allosinosaurus</option>
<option value="Ankyntrosaurus">Ankyntrosaurus</option>
</select>
</td>
</tr>
html 不是必须的,但我只是用它来少说话 :p
谢谢!
1.05 ^ dif
不是你想的那样。 ^
是二元异或运算符,它会在这里给你一些奇怪的值,而不是你想要指数运算符 **
:
1.05 ** dif
所以我试图创造一些 "app" 来培养我一周的 js 技能。它比看起来更难!但它非常有趣。所以,我遇到了我能想到的最奇怪的困难:
当我在计算到最后一行时使用普通数字时,结果是正常的,当两个变量之一存在时,计算非常非常错误(显然是错误的)。我搜索了很多解决方案,但没有任何帮助。
var Alankylosaurus_stats = {
hp: 4200,
armor: .3,
dmg: 900,
speed: 110,
crit: 5
};
var Allosinosaurus_stats = {
hp: 4500,
armor: .15,
dmg: 1500,
speed: 110,
crit: 20
};
function dinoStats(x) {
var y = parseFloat(document.getElementById('level_select_' + x).value);
var dif = 26 - y;
var dino = document.getElementById('dino_select_' + x).value;
console.log(dif);
if (dino === 'Alankylosaurus') {
document.getElementById('table_hp_' + x).innerHTML =
Math.round( Alankylosaurus_stats.hp / (1.05 ^ dif));
};
if (dino === 'Allosinosaurus') {
document.getElementById('table_hp_' + x).innerHTML =
Math.round( Allosinosaurus_stats.hp / (1.05 ^ dif));
};
};
<tr>
<td colspan="5">
<label for="level_select_left">Choose level:</label>
<select id="level_select_left" onchange="dinoStats('left')">
<option value="1">--Please choose--</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26" selected>26</option>
</select>
</td>
</tr>
<tr>
<td colspan="5">
<label for="dino_select_left">Choose Dino:</label>
<select id="dino_select_left" onchange="dinoPick('left')">
<option value="">--Please choose--</option>
<option value="Alankylosaurus">Alankylosaurus</option>
<option value="Allosinosaurus" selected>Allosinosaurus</option>
<option value="Ankyntrosaurus">Ankyntrosaurus</option>
</select>
</td>
</tr>
html 不是必须的,但我只是用它来少说话 :p
谢谢!
1.05 ^ dif
不是你想的那样。 ^
是二元异或运算符,它会在这里给你一些奇怪的值,而不是你想要指数运算符 **
:
1.05 ** dif