以前只知道在js中0.1+0.2 !==0.3
,但最近做项目时遇到了这样的需求,上一个数据与下一数据要连续,要满足不同行之间的数据只差只能是0.1,当我写好了,按lastNum-currentNum = 0.1来判断时,发现判断是不对,最后发现这类问题其实浮点数运算的问题。这时才发现我需要总结一下。
上述需求是这样解决的
Number((Number(value) - Number(before)).toFixed(3)) <0.1
,因为value与before可能是字符串,toFixed
处理后也是字符串,所以都用Number做了个显示转换。当满足上述关系式,就代表通过校验
关于详细的浮点数问题可以参看文档
JavaScript 浮点数运算的精度问题