为什么在下面的脚本中 q == 0?
<script>
var start = 1234567890123456789;
var end = 1234567890123456799;
var q = end - start;
alert(q);
</script>
我认为结果应该是 10。这两个数相减的正确方法是什么?
最佳答案
因为 JavaScript 中的数字是 float 。它们的精度有限。
当 JavaScript 遇到一个非常长的数字时,它会将它四舍五入到它可以表示为 64 位 float 的最接近的数字。在您的脚本中,start
和 end
被四舍五入为相同的值。
alert(1234567890123456789); // says: 1234567890123456800
alert(1234567890123456799); // says: 1234567890123456800
没有对大整数进行精确算术的内置方法,但您可以使用 BigInteger 库,例如 this one。
关于javascript - 在javascript中减去长数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2050111/