js 有小数点数据求和多出小数点问题记录

>>  300+192.92
<<  492.91999999999996
>>  (300*100+192.92*100)/100
<<  492.92

做统计汇总时,页面加和,展示出一堆的小数点。

网上查找了一下才知道好像是个精度BUG。一是说 JavaScript 浮点数计算的 Bug,另有说和计算机最终转换成二进制计算有关系,但是不是所有小数都会有这种现象。

干脆自己把它变成整数再求余了。

网上自定义算法:

//自定义加法运算
function addNum (num1, num2) {
 var sq1,sq2,m;
 try {
  sq1 = num1.toString().split(".")[1].length;
 }
 catch (e) {
  sq1 = 0;
 }
 try {
  sq2 = num2.toString().split(".")[1].length;
 }
 catch (e) {
  sq2 = 0;
 }
 m = Math.pow(10,Math.max(sq1, sq2));
 return (num1 * m + num2 * m) / m;
}
alert(addNum(0.1, 0.2));

参见:

http://www.jb51.net/article/73043.htm

原文地址:https://www.cnblogs.com/yeyuchangfeng/p/6889867.html