美文网首页
JS数学计算精度修正

JS数学计算精度修正

作者: 小枫学幽默 | 来源:发表于2017-06-08 11:35 被阅读776次

问题描述

如果我问你,4330.61乘以100等于多少,我猜你肯定跟我说:“肯定是 433061”啊!
是啊,要我我也是这么回答,来来来我们来看看浏览器怎么说吧,如下图

浏览器告诉我,他就是算不对
偌!浏览器告诉我,他就是算不对,这要是给客户算钱,客户不就有意见了....
WHY?计算机计算出来的还不如我自己的心算呢!!!!
如果你想了解什么原因,您请看=>js浮点数精度问题的前世今生?

解决办法

;(function(){
  function mathService(){
    this.add=function(a,b){
      var c, d, e;
      try {
        c = a.toString().split(".")[1].length;
      } catch (f) {
        c = 0;
      }
      try {
        d = b.toString().split(".")[1].length;
      } catch (f) {
        d = 0;
      }
      return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) + this.mul(b, e)) / e;
   }

   this.mul=function(a, b) {
      var c = 0,
        d = a.toString(),
        e = b.toString();
      try {
        c += d.split(".")[1].length;
      } catch (f) {}
      try {
        c += e.split(".")[1].length;
      } catch (f) {}
      return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
    }

   this.sub=function(a,b){
     var c, d, e;
     try {
       c = a.toString().split(".")[1].length;
     } catch (f) {
       c = 0;
     }
     try {
       d = b.toString().split(".")[1].length;
     } catch (f) {
       d = 0;
     }
     return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) - this.mul(b, e)) / e;
   }

   this.div=function(a, b) {
     var c, d, e = 0,
       f = 0;
     try {
       e = a.toString().split(".")[1].length;
     } catch (g) {}
     try {
       f = b.toString().split(".")[1].length;
     } catch (g) {}
     return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), this.mul(c / d, Math.pow(10, f - e));
   }
  }

  window.mathService=new mathService()

})(window);

来来来,用起来

image.png

Ok!写完收工!!!

相关文章

  • JS数学计算精度修正

    问题描述 如果我问你,4330.61乘以100等于多少,我猜你肯定跟我说:“肯定是 433061”啊!是啊,要我我...

  • 备忘

    1、js中解决数字计算精度问题,math.js bignumber. math.js https://blog.c...

  • Js计算精度问题

    最近在做金融类的开发,页面需要一些计算,在计算过程中发现js页面会存在精度问. 例如: 0.1 + 0.2 /...

  • decimal.js的简单封装

    js的计算有精度问题,在业务处理中总是会出现莫名其妙的数据,在这里我们使用decimal.js解决计算精度问题。然...

  • js浮点金额计算精度

    在js中进行以元为单位进行浮点数计算时,会产生精度问题,例如: 大多数编程语言计算采用的是IEEE 754 标准,...

  • js浮点金额计算精度

    在js中进行以元为单位进行浮点数计算时,会产生精度问题,例如: 大多数编程语言计算采用的是IEEE 754 标准,...

  • JS的计算精度问题

    如 0.1 + 0.2 = 0.30000000000000004注意,单纯的先乘后加减再除是没用的,例如600....

  • js精度问题

    关于js浮点数计算精度不准确问题的解决办法 今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一...

  • Discuz!X3.2论坛标题字数突破80的限制解决方法

    本教程同样适用于Discuz!X3.3 搞定方式步骤 1、数据库修正; 二、修正JS验证字符数文件; 3、修正模板...

  • JS浮点数计算精度

    JS的浮点数,计算都是会有问题的。下面给出加减乘除的解决办法 131.20*100 = 13119.999999 ...

网友评论

      本文标题:JS数学计算精度修正

      本文链接:https://www.haomeiwen.com/subject/tdizfxtx.html