基于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