javascript ints评估错误

时间:2012-01-19 06:33:12

标签: javascript if-statement int long-integer bigint

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

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

直到某一点才能正常工作,但一旦数字开始变大,即:

price1: 12345678
price2: 234556

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

3 个答案:

答案 0 :(得分:4)

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

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

有用吗?如果是,price1price2是字符串,前缀+会将它们转换为数字。

答案 1 :(得分:1)

你是不是在测试数字?

如上所述,您指定的值不会太大,无法证明此类错误的合理性。在我看来,这些值是按字典(作为字符串)顺序测试的。

我会相应地更改你的代码

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

答案 2 :(得分:0)

我假设price1& price2ints

要正确they should have精确度为+/- 9007199254740992