Может ли javascript вести себя неадекватно?

xoxol4uk22
На сайте с 14.11.2017
Offline
66
515

Делаю простой калькулятор на javascript без знаний языка. Столкнулся со странной проблемой. Вот функция:

var d = (uroven2 - uroven1) / uroven2*100;
var с = (uroven1 - uroven2) / uroven1*100;
var e = uroven1/(uroven1*time1)*100;


if (a < b) {
document.getElementById('vyvod_1').innerHTML = 'текст ' + c;
document.getElementById('vyvod_2').innerHTML = 'текст.';
} else if (a >= b) {
document.getElementById('vyvod_1').innerHTML = 'текст ' + d;
document.getElementById('vyvod_2').innerHTML = 'Текст ' + e + ' текст';
}

Краткая цель: когда переменная A больше B (их вводит пользователь), то рассчитывается процент роста (переменная С). В противном случае – процент падения (переменная E).

Затем, в первом случае выводится один результат ("уровень вырос на..."), во втором случае – другой ("уровень упал на...").

И вот получается почему-то бред. Когда числа маленькие исходных переменных, то все работает. Но когда первое число вводимой переменной ввести больше (больше 1000, а иногда и даже 100), скрипт всегда считает, что оно больше второго и выдает результат для a < b.

Как такое может быть? Я понимаю, что этот код – убожество, но мне лишь бы считало)) Просто учусь...

---------- Добавлено 09.01.2019 в 01:29 ----------

Методом подбора пришел к заключению, что работать адекватно перестает при определенном коэффициенте, который зависит от размера переменных. Например, при около 1000 работает только когда переменная A более, чем в 2,7 раза меньше переменной B. Но при маленьких числах этот коэфициент значительно меньше, и все работает нормально пока между ними есть около 10% разницы.

---------- Добавлено 09.01.2019 в 01:41 ----------

Проблему решил изменением конструкции If.

Вместо того, чтобы сравнивать переменные между собой, я сравнил их разницу с нулем. Т.е. вместо "if a < b" сделал "var z = a-b; if z <0;"

Так и не понял разницы, но в таком виде все работает нормально.

[Удален]
#1
xoxol4uk22:
Так и не понял разницы, но в таком виде все работает нормально.

а и в у вас строковые переменные

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий