在javascript中减去长数字

Eri*_*ric 9 javascript subtraction long-integer

为什么在以下脚本中q == 0?

<script>
  var start = 1234567890123456789;
  var end =   1234567890123456799;
  var q = end - start;
  alert(q);
</script>
Run Code Online (Sandbox Code Playgroud)

我认为结果应该是10.减去这两个数字的正确方法是什么?

Jas*_*rff 20

因为JavaScript中的数字是浮点数.它们的精度有限.

当JavaScript看到一个非常长的数字时,它会将其四舍五入到它可以表示为64位浮点数的最近数字.在您的脚本中,startend舍入到相同的值.

alert(1234567890123456789);   // says: 1234567890123456800
alert(1234567890123456799);   // says: 1234567890123456800
Run Code Online (Sandbox Code Playgroud)

没有内置的方法可以对大整数进行精确算术,但是你可以使用像这样的BigInteger库.