所以我正在编写一个javascript应用程序,基本上如果一个数字大于另一个数字我想交换它们的值:
if(price1 > price2)
{
var temp = price1;
price1 = price2;
price2 = temp;
}
直到某一点才能正常工作,但一旦数字开始变大,即:
price1: 12345678
price2: 234556
然后表达式将评估为false并且不执行任何操作。有谁知道这是什么问题?谢谢!
答案 0 :(得分:4)
您确定将这些作为数字进行比较吗?例如,如果您将代码更改为
if (+price1 > +price2) {
var temp = price1;
price1 = price2;
price2 = temp;
}
有用吗?如果是,price1
和price2
是字符串,前缀+
会将它们转换为数字。
答案 1 :(得分:1)
你是不是在测试数字?
如上所述,您指定的值不会太大,无法证明此类错误的合理性。在我看来,这些值是按字典(作为字符串)顺序测试的。
我会相应地更改你的代码
if(Number(price1) > Number(price2)) {
var temp = price1;
price1 = price2;
price2 = temp;
}
答案 2 :(得分:0)
我假设price1
& price2
为ints
。
要正确they should have精确度为+/- 9007199254740992
。