所以我正在编写一个javascript应用程序,基本上如果一个数字大于另一个我想交换它们的值:
if(price1 > price2)
{
var temp = price1;
price1 = price2;
price2 = temp;
}
这可以正常工作直到某一点,但是一旦数字开始变大,即:
price1: 12345678
price2: 234556
然后表达式将评估为 false 并且不会执行任何操作。有谁知道问题是什么?谢谢!
所以我正在编写一个javascript应用程序,基本上如果一个数字大于另一个我想交换它们的值:
if(price1 > price2)
{
var temp = price1;
price1 = price2;
price2 = temp;
}
这可以正常工作直到某一点,但是一旦数字开始变大,即:
price1: 12345678
price2: 234556
然后表达式将评估为 false 并且不会执行任何操作。有谁知道问题是什么?谢谢!
你确定这些是作为数字进行比较的吗?例如,如果您将代码更改为
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
。