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

本文探讨了计算机内部表示浮点数时产生的精度丢失问题,特别是对于无法用二进制精确表示的十进制小数。文章解释了为什么简单运算如38.6-38.2会产生看似不正确的结果,并提供了一种通过JavaScript函数解决此问题的方法。

今天在偶然用到了一个简单的运算,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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值