在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. Python的驻留机制(仅对数字,字母,下划线有效)

    Python的驻留机制及为在同一运行空间内,当两变量的值相同,则地址也相同. 举例: a = 'abc' b = 'abc' print(id(a)) print(id(b)) 以上示例为驻留机制有效 ...

  2. dotnet core 输出调试信息到 DebugView 软件

    本文告诉大家如何在 dotnet core 输出调试信息到 DebugView 软件 在之前告诉小伙伴,如何在 WPF 输出调试信息到 DebugView 软件,请看文章 WPF 调试 获得追踪输出 ...

  3. java中把某个字符串中的单引号替换成双引号

    String regexp = "\'";String str = "'good'";System.out.println("替换前:" + ...

  4. CodeForces - 559C

    学到了学到了,逆元求组合数还有贼神仙的计数DP 太强了! 难受啊

  5. DEVOPS技术实践_02:jenkins自动构建项目

    一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root r ...

  6. __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__的使用

    C/C++ 有5个常用的预定义宏,可以当作变量直接使用 __FILE__,__FUNCTION __,__LINE__,__DATE__,__TIME__. 注意是两个下划线. 其含义如下: __FI ...

  7. win32汇编简单实现窗口程序

    .386 .model flat,stdcall option casemap:none ;========================== ;include部分 include windows. ...

  8. 大数据-HDFS 集群搭建的配置文件

    1.HDFS简单版集群搭建相关配置文件 1.core-site.xml文件 <property> <name>fs.defaultFS</name> <val ...

  9. CF1272D. Remove One Element 题解 动态规划

    题目链接:http://codeforces.com/contest/1272/problem/D 题目大意: 给你一个长度为 \(n\) 的数组,你最多删除一个元素(也可以不删),求此条件限制下的最 ...

  10. 「洛谷P1262」间谍网络 解题报告

    P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ...