zoukankan      html  css  js  c++  java
  • js计算精度

     1 /**
     2  * 解决两个数相加精度丢失问题
     3  * @param a
     4  * @param b
     5  * @returns {Number}
     6  */
     7 function floatAdd(a, b) {
     8     var c, d, e;
     9     if(undefined==a||null==a||""==a||isNaN(a)){a=0;}
    10     if(undefined==b||null==b||""==b||isNaN(b)){b=0;}
    11     try {
    12         c = a.toString().split(".")[1].length;
    13     } catch (f) {
    14         c = 0;
    15     }
    16     try {
    17         d = b.toString().split(".")[1].length;
    18     } catch (f) {
    19         d = 0;
    20     }
    21     e = Math.pow(10, Math.max(c, d));
    22     return  (floatMul(a, e) + floatMul(b, e)) / e;
    23 }
    24 /**
    25  * 解决两个数相减精度丢失问题
    26  * @param a
    27  * @param b
    28  * @returns {Number}
    29  */
    30 function floatSub(a, b) {
    31     var c, d, e;
    32     if(undefined==a||null==a||""==a||isNaN(a)){a=0;}
    33     if(undefined==b||null==b||""==b||isNaN(b)){b=0;}
    34     try {
    35         c = a.toString().split(".")[1].length;
    36     } catch (f) {
    37         c = 0;
    38     }
    39     try {
    40         d = b.toString().split(".")[1].length;
    41     } catch (f) {
    42         d = 0;
    43     }
    44     e = Math.pow(10, Math.max(c, d));
    45     return (floatMul(a, e) - floatMul(b, e)) / e;
    46 }
    47 /**
    48  * 解决两个数相乘精度丢失问题
    49  * @param a
    50  * @param b
    51  * @returns {Number}
    52  */
    53 function floatMul(a, b) {
    54     var c = 0,
    55         d = a.toString(),
    56         e = b.toString();
    57     try {
    58         c += d.split(".")[1].length;
    59     } catch (f) {}
    60     try {
    61         c += e.split(".")[1].length;
    62     } catch (f) {}
    63     return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
    64 }
    65 /**
    66  * 解决两个数相除精度丢失问题
    67  * @param a
    68  * @param b
    69  * @returns
    70  */
    71 function floatDiv(a, b) {
    72     var c, d, e = 0,
    73         f = 0;
    74     try {
    75         e = a.toString().split(".")[1].length;
    76     } catch (g) {}
    77     try {
    78         f = b.toString().split(".")[1].length;
    79     } catch (g) {}
    80     return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), floatMul(c / d, Math.pow(10, f - e));
    81 }
  • 相关阅读:
    Spring-security+Oauth2.0 零散知识汇总(备忘)
    Java Mail 发送邮件 JMail 多人 解决乱码 带附件
    AngularJs 性能优化英文原版(个人备份使用)
    Java基础练习- Java-Swing 拼图游戏 第一部分:创建java窗口添加窗口元素
    Json格式页面解析不出来
    spring-security 异常处理求助
    MySQL-存储过程
    吸血鬼数字
    浏览器的兼容性
    es6-----promise
  • 原文地址:https://www.cnblogs.com/onlywu/p/14185186.html
Copyright © 2011-2022 走看看