Javascript Ints неправильно оценивает
Поэтому я пишу приложение на javascript, и в основном, если одно число больше другого, я хочу поменять их значения:
if(price1 > price2)
{
var temp = price1;
price1 = price2;
price2 = temp;
}
Это работает нормально до определенного момента, но как только цифры начинают увеличиваться, т.е.
price1: 12345678
price2: 234556
Тогда выражение оценивается как ложное и ничего не будет делать. Кто-нибудь знает в чем проблема? Спасибо!
3 ответа
Вы уверены, что они сравниваются как числа? Например, если вы измените код на
if (+price1 > +price2) {
var temp = price1;
price1 = price2;
price2 = temp;
}
это работает? Если так price1
а также price2
это строки и префикс +
преобразует их в числа.
Вы уверены, что тестируете числа?
Как указано, указанные вами значения не настолько велики, чтобы оправдать ошибку такого рода. Мне кажется, что значения тестируются в лексикографическом (в виде строк) порядке.
Я бы изменил ваш код соответственно
if(Number(price1) > Number(price2)) {
var temp = price1;
price1 = price2;
price2 = temp;
}
Я предполагаю, что оба price1
& price2
являются ints
,
Чтобы быть правильными, они должны иметь точность +/- 9007199254740992
,