JavaScript 0.1+0.2 != 0.3 的理解

 1. 对于计算机而言,两个数字在相加时是以二进制形式进行的,在呈现结果时才转换成十进制。

    JavaScript不区分整数值和浮点数值。

  JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的。浮点数的精度问题不是JavaScript特有的,因为有些小数以二进制表示位数是无穷的

2.十进制小数转换为二进制小数:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。


解决方案:
function accAdd(arg1,arg2){
  var r1,r2,m;
  try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
  try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
  m=Math.pow(10,Math.max(r1,r2))
  return (parseInt(arg1*m,10)+parseInt(arg2*m,10))/m;
}

原文地址:https://www.cnblogs.com/sener/p/14448533.html