jquery中浮点数运算结果保留两位小数的方法

今天在偶然用到了一个简单的运算,38.6-38.2,结果竟然是0.3999999999999986,一般来说肯定是0.4。
通过查询,了解到,计算机内部的二进制是无法精确表达0.1,0.2之类的数字的。
原理:
像简单的0.1
用十进制表示:1×10^-1 ,也就是0.1
而用二进制表示:0×2^-1+0×2^-2+0×2^-3+1×2^−4+1×2^−5……
也就是:0.0001 1001 1001 1001…基本就是个无限循环小数

但是当结果为可用二进制精确表示的小数,例如0.5
由于0.5可用二进制0.1表示,所以不会产生丢失精度的问题,看起来也是正常的

解决方法:
在代码中加入如下方法

//保留两位小数
function intToFloat(val){
	return new Number(val).toFixed(2);
}

在每个返回值为浮点数的地方调用该函数即可,toFixed作用是四舍五入,参数保留n位小数

intToFloat(float1-float2);

猜你喜欢

转载自blog.csdn.net/weixin_38958597/article/details/82424054