一。加法精度修改后如下:
二减法精度修改后如下:
三。乘法精度修改后如下:
㈣除法精度修改后如下:
使用:exc(0.5, 0.2) => 2.5, 只允许传入两个参数。如果计算出现无穷数请后期根据需要修改最后代码进行取舍
建议:所有的计算朂后都由后端处理好,再传到前端这样可以避免精度问题。
7.5*5.5=206.08 (JS算出来是这样的一个结果我四舍五入取两位小数)我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.98怎么会这样两个只有一位小数的数字相乘,怎么可能多出这麼小数点出来我Google了一下,发现原来这是JavaScript浮点运算的一个bug比如:7*0.8 JavaScript算出来就是:5.0005网上找到了一些解决办法,就是重新写了一些浮点运算的函数或直接扩大倍数运算下面就把这些方法摘录下来,以供遇到同样问题的朋友参考:
//除法函数用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显这个函数返回较为精确的除法结果。
//返回值:arg1除以arg2的精确结果
//给Number类型增加一个div方法调用起来更加方便。
//乘法函数用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显这个函數返回较为精确的乘法结果。
//返回值:arg1乘以arg2的精确结果
//给Number类型增加一个mul方法调用起来更加方便。
//加法函数用来得到精确的加法结果
//说奣:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显这个函数返回较为精确的加法结果。
//返回值:arg1加上arg2的精确结果
//给Number类型增加一个add方法调用起来更加方便。
//减法函数用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显这个函数返回较为精确的减法结果。
//返回值:arg1减去arg2的精确结果
//给Number类型增加一个subtr 方法调用起来更加方便。
在你要用的地方包含这些函数然后调用它来计算就可以了。/如果在知道小数位个数的前提下可以考虑通过将浮点数放大倍数到整型(最后再除以相应倍数),再进行运算操作这样就能得到正确的结果了