js浮点数精度丢失和toFixed四舍五入不准问题

1. js的浮点数计算不准确替代方案
 
例如:
0.1 + 0.2 = 0.30000000000000004 // 应该是 0.3
替代方案
  • big.js:  提供了十进制的计算,方法略少,但足够使用,体积最小。
  • bignumber.js:提供了超高精度的数字处理能力,可以解决精度丢失问题。
  • decimal.js:可以精确表示浮点数,解决精度丢失问题。
  • number-precision: 可以做四舍五入,加减乘除各种运算。
  • currency.js:货币格式化,优先使用  Intl.NumberFormat ,不行再使用此库。
 
2. toFixed四舍五入不准的替代方法
 
例如:
(2.005).toFixed(2) // '2.00', 应该是 2.01
(1.45).toFixed(1)  // '1.4', 应该是 1.5

替代方案

复制代码
//重写toFixed
Number.prototype.toFixed=function(s) {
    const adjust = this >= 0 ? 0.5 : -0.5;
    return (parseInt(this * Math.pow( 10, s ) + adjust)/ Math.pow( 10, s )).toString();
}
//toLocaleString
function format(num, decimals){
    return num.toLocaleString('en-US', {
        minimumFractionDigits: 2,      
        maximumFractionDigits: 2,
        useGrouping: false
    })
}
//或者Intl.NumberFormat
function format(num, decimals){
    const formatter = new Intl.NumberFormat('en-US', {
        minimumFractionDigits: decimals,      
        maximumFractionDigits: decimals,
        useGrouping: false
    })
    return formatter.format(num)
}
复制代码

 也可以直接使用上面的库来解决

 

 

出处:toFixed不精准问题的解决办法 
         js toFixed 四舍五入问题
         关于 js 中的精度丢失问题 

posted @   全玉  阅读(609)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-06-26 服务器推送(Server push)技术总结
2018-06-26 双向绑定的极简实现
2017-06-26 dom方法insertAfter的实现
2017-06-26 斐波那契数列的递归和非递归解法
点击右上角即可分享
微信分享提示