• 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 }
  • 相关阅读:
    时间复杂度 空间复杂度
    qt 打开串口 UI卡死
    python 网络编程
    Java 理解泛型的基本含义
    Java LinkedList 和 ArrayList
    Java renameTo()重新命名此抽象路径名表示的文件
    Java separatorChar 如何在Java里面添加
    Java 遍历文件夹里面的全部文件、指定文件
    Java File文件操作 创建文件目录,删除文件目录
    Java toString()方法的神奇之处
  • 原文地址:https://www.cnblogs.com/onlywu/p/14185186.html
Copyright © 2020-2023  润新知