2

所以我正在编写一个javascript应用程序,基本上如果一个数字大于另一个我想交换它们的值:

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

这可以正常工作直到某一点,但是一旦数字开始变大,即:

price1: 12345678
price2: 234556

然后表达式将评估为 false 并且不会执行任何操作。有谁知道问题是什么?谢谢!

4

3 回答 3

4

你确定这些是作为数字进行比较的吗?例如,如果您将代码更改为

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

它有效吗?如果是price1并且price2是字符串,前缀+将它们转换为数字。

于 2012-01-19T06:43:16.520 回答
1

你确定你在测试数字吗?

如前所述,您指定的值并没有那么大,不足以证明这种错误是合理的。在我看来,这些值是按字典顺序(作为字符串)测试的。

我会相应地更改您的代码

if(Number(price1) > Number(price2)) {
    var temp = price1;
    price1 = price2;
    price2 = temp;
}
于 2012-01-19T06:47:41.693 回答
0

我假设两者都是price1& 。price2ints

这是正确的,他们应该有一个精度+/- 9007199254740992

于 2012-01-19T06:40:44.490 回答