关于 JS 浮点数精度问题导致保留两位小数后进行四舍五入不符合预期
工作中遇到类似如下代码段:以上代码很简单,就是把一个数字保留 2 位小数,并且进行四舍五入后输出。预期输出 9.91 ,但实际输出 9.90 。
导致以上问题的主要原因
JavaScript 使用 IEEE 754 双精度浮点数格式存储数字,IEEE 754 在二进制中无法精确表示大多数十进制小数。
例如,9.905 的二进制表示是 无限循环小数,因此在双精度浮点数中只能存储一个近似值。实际上,JavaScript 将 9.905 存储为:9.90499999999999964472863211994758968353271484375
解决方案
解决方案 1: 使用高精度库(推荐)
引入专门处理高精度计算的库(如 Decimal.js 或 Big.js),
示例代码:
解决方案 2: 使用Math函数
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]