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,

Другие вопросы по тегам