在js中使用“+”、“-”等符号进行运算会出现很大的误差,所以需要自己创建函数进行精确运算。

  1. //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
  2. //调用:accAdd(arg1,arg2)
  3. //返回值:arg1加上arg2的精确结果
  4. function accAdd(arg1,arg2){
  5. var r1,r2,m;
  6. try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
  7. try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
  8. m=Math.pow(10,Math.max(r1,r2));
  9. return (arg1*m+arg2*m)/m;
  10. }
  11. //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
  12. //调用:accSub(arg1,arg2)
  13. //返回值:arg1减上arg2的精确结果
  14. function accSub(arg1,arg2){
  15. return accAdd(arg1,-arg2);
  16. }
  17. //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
  18. //调用:accMul(arg1,arg2)
  19. //返回值:arg1乘以arg2的精确结果
  20. function accMul(arg1,arg2)
  21. {
  22. var m=0,s1=arg1.toString(),s2=arg2.toString();
  23. try{m+=s1.split(".")[1].length;}catch(e){}
  24. try{m+=s2.split(".")[1].length;}catch(e){}
  25. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) ;
  26. }
  27. //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
  28. //调用:accDiv(arg1,arg2)
  29. //返回值:arg1除以arg2的精确结果
  30. function accDiv(arg1,arg2){
  31. var t1=0,t2=0,r1,r2;
  32. try{t1=arg1.toString().split(".")[1].length;}catch(e){}
  33. try{t2=arg2.toString().split(".")[1].length;}catch(e){}
  34. with(Math){
  35. r1=Number(arg1.toString().replace(".","")) ;
  36. r2=Number(arg2.toString().replace(".","")) ;
  37. return (r1/r2)*pow(10,t2-t1);
  38. }
  39. }

【javaScript】加减乘除的精确计算的更多相关文章

  1. js加减乘除精确计算

    Javascript精确计算时的bug JS无法进行精确计算的bug 在做CRM,二代审核需求审核详情页面时.需要按比例(后端传类似0.8的小数)把用户输入的数字显示在不同的地方. 在做dubheIn ...

  2. 电商网站中价格的精确计算(使用BigDecimal进行精确运算(实现加减乘除运算))

    使用BigDecimal的String的构造器.商业计算中,使用bigdecimal的String构造器,一定要用. 重要的事情说三遍: 商业计算中,使用bigdecimal的String构造器! 商 ...

  3. Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

    (转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...

  4. Java使用BigDecimal精确计算的简单公式计算器

    由于工作需要,写了一个使用BigDecimal运算的精确计算的计算器(然后发现其实比不用BigDecimal的并好不到哪里去) 只能做加减乘除 double类型的数字在千万级别的时候会转成科学计数法, ...

  5. Java精确计算

    Java精确计算 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...

  6. Java中浮点型数据Float和Double进行精确计算的问题

    Java中浮点型数据Float和Double进行精确计算的问题 来源  https://www.cnblogs.com/banxian/p/3781130.html 一.浮点计算中发生精度丢失     ...

  7. 14、Java中用浮点型数据Float和Double进行精确计算时的精度问题

    一.浮点计算中发生精度丢失 大概很多有编程经验的朋友都对这个问题不陌生了:无论你使用的是什么编程语言,在使用浮点型数据进行精确计算时,你都有可能遇到计算结果出错的情况.来看下面的例子. // 这是一个 ...

  8. BigDecimal精确计算工具类

    前言 在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算.而这类操作通常都是可预知的,也就是通用的.所以,写了个工具类来方便以后的工 ...

  9. JAVA中精确计算金额BigDecimal

    package com.chauvet.utils; import java.math.BigDecimal; import java.text.DecimalFormat; import java. ...

随机推荐

  1. url查找参数

    function GetUrlParam(paraName) { var url = document.location.toString(); var arrObj = url.split(&quo ...

  2. 防火墙TCP的单向控制

    网络拓扑: 如上图所示,防火墙分为external/internal/dmz三个安全zone,其中10.133.1.100/32为dmz区的一台squid缓存服务器,10.158.1.10/32,10 ...

  3. F5 LTM旁路配置四层负载

    网络拓扑图如下: 如上图所示,其中LTM和web1,web2处于同一网络中,外部的client访问请求后端的服务的时候,通过F5 LTM的VS地址,将实际的请求分配到后端两台服务web1和web2上 ...

  4. Team Foundation Server 2015使用教程【9】:tfs用户账号切换

  5. PostgreSQL 遇到 column "value" does not exist

    初次使用PostgreSQL,在执行插入语句的时候死活插入不进去数据 INSERT INTO pre_trait ( archive_id, apply_from, owner_area_code ) ...

  6. 第二阶段:1.流程图:10.visio绘制泳道图

    选择跨智能 同时水平 设置好泳道图标题以及泳道名字 泳道位置可以拖拽更换 左侧有一些基本的形状 包括分隔符等等 添加分隔符并填上分隔符上面的阶段名称 左边选择形状界面 然后拖拽使用 同时可以用连接线链 ...

  7. SpringJDBC的使用(转载)

    转载自   https://www.yiibai.com/spring/maven-spring-jdbc-example.html 工具: eclipse4.7.2及mysql-8.0.13 项目最 ...

  8. $Poj3208$ 启示录 数位统计$DP$

    Poj  AcWing Description Sol  这题长得就比较像数位$DP$叭. 所以先用$DP$进行预处理,再基于拼凑思想,通过"试填法"求出最终的答案. 设$F[i] ...

  9. vps远程桌面服务器管理

    vps服务器是没有远程桌面系统的,本地电脑要有远程桌面的组件或者专业的远程桌面管理工具,如果出于安全考虑关闭了3389端口(这是系统自带远程桌面的端口),你可以试试iis7远程桌面管理工具,这个还是很 ...

  10. day3(if和for)

    if if <条件判断 1>: <执行 1>elif <条件判断 2>: <执行 2>elif <条件判断 3>: <执行 3> ...