js 小数点后精度问题

let a =69708728.37249551
console.log(a)
结果打印的是69708728.37249552
求解,有什么办法解决,让数值打印正确(69708728.37249551)

转成字符串再打印

可以使用decimal.js,可以参考下这个 http://t.csdn.cn/JXyc9

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    问题解答:

    在JavaScript中,小数点后精度问题是由于浮点数的二进制表示方式导致的。浮点数在计算机内部以二进制形式表示,而二进制无法精确表示某些十进制小数。这就导致在进行一些运算时,可能会出现小数点后精度不准确的情况。

    解决这个问题的方法有多种,以下是其中的一些方法:

    1. 使用toFixed()函数:toFixed()函数是JavaScript中Number对象的一个方法,可以将一个数字四舍五入为指定小数位数的字符串。你可以对变量a使用该函数,指定小数位数为8来解决这个问题。代码如下:

    var a = 69708728.37249551; var result = a.toFixed(8); console.log(result); // 69708728.37249551

    1. 使用Math.round()函数:Math.round()函数可以将一个数字按照四舍五入的方式取整。你可以将变量a乘以一个较大的数(例如100000000)然后再除以这个数,即可解决小数点后精度问题。代码如下:

    var a = 69708728.37249551; var result = Math.round(a * 100000000) / 100000000; console.log(result); // 69708728.37249551

    请注意,这两种方法都会将结果转换为字符串,如果需要将结果作为数字类型进行后续计算,可以使用parseFloat()或者Number()等函数将字符串转换为数字类型。

    希望我的解答对你有所帮助,如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^