就我而言,我正在使用 parseFloat() 将字符串值“9999999999999999”转换为整数。但它会转换为它的下一个数字,即 10000000000000000。但我需要将它转换为该数字之前的数字,即 9999999999999999998。我在谷歌搜索了一段时间。但无法获得明确的想法来实现这一点。
问问题
731 次
3 回答
0
尝试这个
document.getElementById("demo").innerHTML=Math.round(9999999999999999-2);
输出
9999999999999998
于 2013-05-17T06:30:27.327 回答
0
这个数字太大而无法在 JavaScript Number 值中精确表示。因此,在这样的范围内,任何转换都不会为您提供可靠/精确的值。
即(9999999999999999-1)===(9999999999999999)
返回true
,但(9999999999999998)===(9999999999999999)
返回false。
如果您在 JavaScript 中需要如此高的精度(类似于许多其他语言),您需要使用专门的数据类型(不幸的是,JavaScript 中没有内置“BigInteger”类型)。
于 2013-05-17T06:37:08.453 回答
0
您将需要使用一些外部 javascript 库来处理这样的大数字,因为在不丢失 javascript 整数精度的情况下,您无法表示的最大数字是 9007199254740992(说明:一个数字可以在不丢失精度的情况下达到的 JavaScript 最高整数值是多少? )
在这里,您有一些链接,人们在其中讨论一些用于 javascript 大数字的库。 如何处理javascript中的大数字
于 2013-05-17T06:38:20.390 回答