Невозможно получить правильный результат при использовании переменных для вычисления в js - PullRequest
0 голосов
/ 14 ноября 2018

Итак, я пытался создать какое-нибудь «приложение» для развлечения, чтобы развить свои однодневные навыки в 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 Ответ

0 голосов
/ 14 ноября 2018
 1.05 ^ dif

не то, что вы думаете.^ - это бинарный оператор xor, который даст вам некоторые странные значения, вместо этого вам нужен оператор экспонирования **:

1.05 ** dif
...