解决 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

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

解决javascript中的浮点数计算不精确问题

在javascript中的浮点数计算不准确。javascript的两个浮点数算法结果会有误差。 加减法 原理:取小数位多的一个(Math.max(r1,r2))将加数都乘以10的m次方...
  • Lucky_LXG
  • Lucky_LXG
  • 2017年05月03日 16:45
  • 412

JS小数点乘法除法问题详解

原文:http://www.jb51.net/article/47803.htm 一、用js计算 12.32 * 7  结果是多少?答案:86.24000000000001 为什么会...
  • lan861698789
  • lan861698789
  • 2016年03月09日 23:15
  • 1109

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

问题重现 由于Javascript在实现数字运算的时候,
  • fendouzhe123
  • fendouzhe123
  • 2014年06月06日 17:31
  • 2776

解决js乘法bug

function accMul(arg1,arg2) { var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[...
  • u013766398
  • u013766398
  • 2016年11月25日 17:35
  • 994

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

先运行一段代码看看结果再说: 【代码】 结果: 0.060000000000000005 0.5800000000000001 401.49999999999994 1.23299999999...
  • mffandxx
  • mffandxx
  • 2016年01月09日 11:45
  • 1974

把乘法变成加法(转自csdn longshanks)

不要误会,不是用加法重载operator*。(做这种事情的程序员应该立刻开除)。或者任何跟计算有关的事。这里要讲的是另外一个故事。当你看我这篇帖子的时候,是否想过你的计算机是如何构成的?内存、主板、硬...
  • leimiaomiao
  • leimiaomiao
  • 2007年05月07日 10:10
  • 2020

js加法和乘法的精确计算

//加法函数,用来得到精确的加法结果 //javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 function accAdd(arg1,ar...
  • liu22985342
  • liu22985342
  • 2014年05月29日 15:20
  • 4086

加法变乘法

题目要求: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+2...
  • linhaiyun_ytdx
  • linhaiyun_ytdx
  • 2016年03月15日 19:52
  • 1074

2015年蓝桥杯省赛B组第6题--加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28+29+......
  • iamzxf
  • iamzxf
  • 2015年04月13日 10:31
  • 1394

第六届蓝桥杯JavaA组 第六题 加法变乘法

题目: 我们都知道:1+2+3+ … + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如: 1+2+3+…+10*11+12+…+27*28+29+…+49...
  • wugufeng0220
  • wugufeng0220
  • 2015年04月11日 16:50
  • 982
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决 js 加法,乘法不精确问题
举报原因:
原因补充:

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