解决 js 加法,乘法不精确问题

原创 2016年05月30日 11:51:44


//乘法 

function accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}

//加法


    function accAdd(arg1, arg2) {
      var r1, r2, m, c;
      try {
         r1 = arg1.toString().split(".")[1].length;
     }
     catch (e) {
         r1 = 0;
     }
     try {
         r2 = arg2.toString().split(".")[1].length;
     }
     catch (e) {
         r2 = 0;
     }
     c = Math.abs(r1 - r2);
     m = Math.pow(10, Math.max(r1, r2));
     if (c > 0) {
         var cm = Math.pow(10, c);
         if (r1 > r2) {
             arg1 = Number(arg1.toString().replace(".", ""));
             arg2 = Number(arg2.toString().replace(".", "")) * cm;
         } else {
             arg1 = Number(arg1.toString().replace(".", "")) * cm;
             arg2 = Number(arg2.toString().replace(".", ""));
         }
     } else {
         arg1 = Number(arg1.toString().replace(".", ""));
         arg2 = Number(arg2.toString().replace(".", ""));
     }
     return (arg1 + arg2) / m;

 }











                                                                                                                                                                                                                                                            Songsong

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

解决 double float 数据运算不精确的问题

先运行一段代码看看结果再说: 【代码】 结果: 0.060000000000000005 0.5800000000000001 401.49999999999994 1.23299999999...

彻底解决Javascript数字计算不精确的问题

问题重现 由于Javascript在实现数字运算的时候,

javascript中关于浮点数不精确问题解决方案

精确度 var FloatOper = (function(){ // 表达式处理函数 var FloatOper = function(s){ retur...
  • wmaoshu
  • wmaoshu
  • 2017年03月22日 11:01
  • 188

Java(其实是计算机系统的通病,而不单单是Java的问题,C、C++等任何语言都有这个问题)关于小数的运算结果,不正确不精确,原因剖析,及解决办法

Java(其实是计算机系统的通病,而不单单是Java的问题)关于小数的运算结果,不正确不精确,原因剖析,及解决办法 这么神奇? 试一把。还真是: 从输出结果上看,出在运算上,而不是出在存储...

关于elasticsearch搜索不精确问题

今天有个同事在使用elasticsearch搜索“李四”的时候,跟我说搜索不准切,为什么在username字段里出现“李四君”的排前面,而“李四”的排在后面呢,我也觉得奇怪,按照lucene的评分公式...

javascript数字类型(Number)不精确问题

JavaScript中所有的数字,无论是整数还是小数,其类型均为Number。在程序内部,Number类型的实质是一个64位的浮点数,这与Java中double类型的浮点数是一致的;因此,JavaSc...

不精确数字比较问题

--排序是编程过程经常遇到的一类问题,同时人们也提出了各种各样的方法来提高排序的性能,以后有时间再复习一下各种排序。本文是解决一下排序之前的比较问题,因为只有比较了大小,才能有依据进行排序嘛。。。 ...

关于cordova开发中安卓定位不精确的解决方案

在使用cordova开发移动app的时候会遇到定位的问题,cordova提供了自己的cordova-plugin-geolocation插件,这个插件在ios上面定位不会出现问题,但是在安卓手机上会出...

double的不精确运算的解决方法 BigDecimal的使用

方法一:BIgDecimal package testbigdecimal; import java.math.BigDecimal; public class BigDecimalModel...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决 js 加法,乘法不精确问题
举报原因:
原因补充:

(最多只允许输入30个字)