锷稠 发表于 2025-7-15 14:00:05

关于 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函数

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

蒙飘 发表于 2025-12-5 22:31:11

这个有用。

甦忻愉 发表于 2025-12-20 05:56:39

这个好,看起来很实用

骛扼铮 发表于 2025-12-24 19:19:19

过来提前占个楼

挽幽 发表于 2026-1-14 03:20:21

感谢发布原创作品,程序园因你更精彩

司空娅玲 发表于 2026-1-20 19:09:03

热心回复!

奚娅琼 发表于 2026-1-21 23:11:33

这个好,看起来很实用

喳谍 发表于 2026-1-24 03:07:47

懂技术并乐意极积无私分享的人越来越少。珍惜

玲液 发表于 2026-1-25 04:34:58

分享、互助 让互联网精神温暖你我

佴莘莘 发表于 2026-1-25 09:48:35

用心讨论,共获提升!

柏雅云 发表于 2026-1-30 03:17:13

谢谢分享,试用一下

史穹逊 发表于 2026-2-5 10:24:54

很好很强大我过来先占个楼 待编辑

裴竹悦 发表于 2026-2-5 11:31:39

谢谢分享,试用一下

盛天欣 发表于 2026-2-8 02:42:44

感谢分享,下载保存了,貌似很强大

雨角 发表于 2026-2-8 09:40:19

收藏一下   不知道什么时候能用到

侧胥咽 发表于 2026-2-8 22:36:11

不错,里面软件多更新就更好了

晦险忿 发表于 2026-2-9 22:04:32

用心讨论,共获提升!

指陡 发表于 2026-2-9 22:38:45

用心讨论,共获提升!

处匈跑 发表于 2026-2-11 05:29:05

不错,里面软件多更新就更好了

佟棠华 发表于 2026-2-11 06:07:34

新版吗?好像是停更了吧。
页: [1] 2
查看完整版本: 关于 JS 浮点数精度问题导致保留两位小数后进行四舍五入不符合预期