javascript整数计算不正确
因此,我正在编写一个javascript应用程序,基本上,如果一个数字大于另一个,我希望交换它们的值:javascript整数计算不正确,javascript,if-statement,int,long-integer,bigint,Javascript,If Statement,Int,Long Integer,Bigint,因此,我正在编写一个javascript应用程序,基本上,如果一个数字大于另一个,我希望交换它们的值: if(price1 > price2) { var temp = price1; price1 = price2; price2 = temp; } 这在某一点之前都可以正常工作,但一旦数字开始变大,即: price1: 12345678 price2: 234556 然后表达式的计算结果将为false,并且不会执行任何操作。有人知道问题是什么吗?谢谢 我假设price1
if(price1 > price2)
{
var temp = price1;
price1 = price2;
price2 = temp;
}
这在某一点之前都可以正常工作,但一旦数字开始变大,即:
price1: 12345678
price2: 234556
然后表达式的计算结果将为false,并且不会执行任何操作。有人知道问题是什么吗?谢谢 我假设
price1
和price2
都是ints
这是正确的,精度为
+/-9007199254740992
您确定这些是作为数字进行比较的吗?例如,如果将代码更改为
if (+price1 > +price2) {
var temp = price1;
price1 = price2;
price2 = temp;
}
它有用吗?如果是,则
price1
和price2
是字符串,前缀+
将它们转换为数字。您是舒尔吗?您是在测试数字吗
如前所述,您指定的值不太大,不足以证明这类错误的合理性。在我看来,这些值是按照字典(作为字符串)顺序进行测试的
我会相应地更改您的代码
if(Number(price1) > Number(price2)) {
var temp = price1;
price1 = price2;
price2 = temp;
}
请在某个地方放一个示例页来演示这个问题。这种大小的数字在比较时应该没有问题。我相信你会找到它-“1”排序比“2”低,不管字符串后面是什么数字。(+1)我打赌就是这个。因为问题中发布的代码确实可以正常工作,但当它们是字符串时失败: