JavaScript:算术运算失败

时间:2015-11-16 07:27:26

标签: javascript floating-point

我在JavaScript中执行以下算术运算:

var txtFirstNumberValue = document.getElementById('txt1').value;
var txtSecondNumberValue = document.getElementById('txt2').value;
var result = (parseInt(txtSecondNumberValue) - 
              parseInt(txtFirstNumberValue)) +1;

当我提供以下输入时:

txt1 = 8946270000000000094
txt2 = 8946270000000000082

结果我得到1分。为什么?

请参阅this JSFiddle

1 个答案:

答案 0 :(得分:2)

parseInt可以解析的最大整数是+/- 9007199254740991。在您的情况下,超出范围,因此它将结果设为1,因为它是overflowing the range

另请注意,ECMAScript指定:

  • 有10位数字:(0-9)
  • 共有26个字符:(a-z)

你需要使用BigInteger library来处理这样的大数字。