Javascript Ints неправильно оценивает - PullRequest
2 голосов
/ 19 января 2012

Итак, я пишу приложение на javascript, и, по сути, если одно число больше другого, я хочу поменять их значения:

if(price1 > price2)
{
  var temp = price1;
  price1 = price2;
  price2 = temp;
}

Это прекрасно работает до определенной точки, но как только начинаются числастановится больше, то есть:

price1: 12345678
price2: 234556

Тогда выражение оценивается как ложное и ничего не будет делать.Кто-нибудь знает в чем проблема?Спасибо!

Ответы [ 3 ]

4 голосов
/ 19 января 2012

Вы уверены, что они сравниваются как числа? Например, если вы измените код на

if (+price1 > +price2) {
    var temp = price1;
    price1 = price2;
    price2 = temp;
}

это работает? В этом случае price1 и price2 являются строками, а префикс + преобразует их в числа.

1 голос
/ 19 января 2012

Вы уверены, что тестируете числа?

Как указано, указанные вами значения не настолько велики, чтобы оправдать ошибку такого рода. Мне кажется, что значения тестируются в лексикографическом (в виде строк) порядке.

Я бы изменил ваш код соответственно

if(Number(price1) > Number(price2)) {
    var temp = price1;
    price1 = price2;
    price2 = temp;
}
0 голосов
/ 19 января 2012

Я предполагаю, что оба значения price1 & price2 равны ints.

Чтобы быть правильными они должны иметь точность +/- 9007199254740992.

...