js 两个小数相加的问题

Posted 晚星@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 两个小数相加的问题相关的知识,希望对你有一定的参考价值。

项目中遇到的问题,0.1+0.2为0.30000000000000004,与想象中不一样,

公共的方法

 addNum (num1, num2) 
      num1 == undefined ? num1 = 0 : ''
      num2 == undefined ? num2 = 0 : ''
      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;
    ,

原理是:先判断俩个相加数谁的小数点后位数多,以多的为准,值乘以10的小数位的幂数,相加以后,再除以10的小数位的幂数

以上是关于js 两个小数相加的问题的主要内容,如果未能解决你的问题,请参考以下文章

Js中带有小数的值相加减的解决方案

js 两个小数相加的问题

JS处理小数相加出现溢出的问题

js 小数加法的精度问题解决(0.1+0.2 != 0.3,怎么解决?)

两种精度丢失问题

C语言使用栈实现String类型的两个大数相加