我的 JS 应用程序中有来自后端服务的大量数字。我不想丢失小数点后的任何数字。
但是,当像 999999999999999.99 这样的数字被赋值给 JS 中的变量时,它会四舍五入为 1000000000000000,99999999999999.99 会变成 99999999999999.98。
这两个数字都在限制范围内。即小于 Number.MAX_SAFE_INTEGER
在下面的屏幕截图中查看上述操作:
有人可以解释一下吗?
最佳答案
MAX_SAFE_INTEGER
仅保证低于其整数的精度,而不保证小数。
事实上,Javascript 中没有小数,只有 float 。当您尝试以过高的精度表示数字时,它只会四舍五入到最接近的 64 位 float 。
如果您确实想要小数,则需要使用小数库,例如 decimal.js或者你可以自己编写。
关于JavaScript - 不正确的自动舍入小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917318/