基于js运算解决数字精点和浮点的解决

1.一个问题console.log(0.1+0.2===0.3) //这样的结果时false

四舍五入 toFixed()方法  如果是有精度要求可以直接使用它解决 能得出结果

 

 这样出现数据会不正确

还包括round(),floor(),ceil()等都是不会四舍五入,有精度问题

ES6在Number对象上新增一个极小常量Number.EPSILON.它是表示1与大于1的最小浮点数之间的差,它实际上是js能够表示的最小精度,

误差小于这个值,就可以认为已经没有意义了,即不存在误差了。

round可以保证精度正确

let c= 2.4462;c=Math.round((c+Number.EPSILON) * 100) /100;

2.将浮点数化为整数 运算 再对结果做除法。0.1 + 0.2

(1+2)/10

3.浮点数转化字符串,模拟实际运算

4.修复原生toFixed不准确问题

function toDecimal(num){ return Math.round(num + Number.EPSILON);}

但是对于负数有问题

toDecimal(-1.5)//1

// toFixed 修复
function toFixed(num, s) {
var times = Math.pow(10, s)
var des = num * times + 0.5
des = parseInt(des, 10) / times
return des + ''
}
//这是toFixe函数第一个参数小数点值,第二个保留几位

 

posted @   cc-front  阅读(196)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示