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

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

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)我打赌就是这个。因为问题中发布的代码确实可以正常工作,但当它们是字符串时失败: