找回密码
 立即注册
首页 业界区 安全 关于 JS 浮点数精度问题导致保留两位小数后进行四舍五入 ...

关于 JS 浮点数精度问题导致保留两位小数后进行四舍五入结果不符合预期

颓哀 2025-7-15 14:27:52
list页面配置导出按钮

更新时间:2025-5-7 13:32
  1. {
  2.     "action": "COMMON_EXPORT",
  3.     "label": "导出",
  4.     "key": "common_export",
  5.     "left": true
  6. }
复制代码
获取当前登录用户

更新时间:2025-6-21 15:09
CustomerUtil.call_open_api("base.get.auth.info", {})
绩效数据权限控制

更新时间:2025-6-21 16:32
售后数据(维修率):


  • 李艺锋(003089)
    品类:燃气热水器
  • 王晓楠(218124)
    品类:电热水器、吸油烟机、燃气灶、消毒柜、集成灶、热泵户式采暖、热泵热水器
  • 张宁(010251)
    品类:燃气采暖炉
  • 滕建阳(228998)
    驾驶舱部门:更合电器线
  • 李建平(003573)
    驾驶舱部门:更合烤炉线、杨和烤炉线
  • 龙志玲(090781)
    驾驶舱部门:泰国工厂
  • 李军(003571)
    指标:配件关键零部件累计一年维修率
    and
    驾驶舱部门:集团
关于 JS 浮点数精度问题导致保留两位小数后进行四舍五入结果不符合预期

更新时间:2025-7-15 10:51
工作中遇到类似如下代码段:
  1. [/code]以上代码很简单,就是把一个数字保留 2 位小数,并且进行四舍五入后输出。预期输出 9.91 ,但实际输出 9.90 。
  2. [size=4]导致以上问题的主要原因[/size]
  3. JavaScript 使用 IEEE 754 双精度浮点数格式存储数字,IEEE 754 在二进制中无法精确表示大多数十进制小数。
  4. 例如,9.905 的二进制表示是 无限循环小数,因此在双精度浮点数中只能存储一个近似值。实际上,JavaScript 将 9.905 存储为:9.90499999999999964472863211994758968353271484375
  5. [size=4]解决方案[/size]
  6. [b]解决方案 1:[/b] 使用高精度库(推荐)
  7. 引入专门处理高精度计算的库(如 Decimal.js 或 Big.js),
  8. 示例代码:
  9. [code]
复制代码
解决方案 2: 使用Math函数
[code][/code]
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册