zoukankan      html  css  js  c++  java
  • js 小数计算失去精度

    原因:小数计算会转化为二进制 精度丢失 

    举个例子:4.02*10的N次方 怎么算都是错的; 常见问题 0.1+0.2 !=0.3 。。。

    处理:转化为小数进行计算

    //加法
    
    function addNum (a,b){
        
         var c,d,e;
        try {
              c = a.toString().split(".")[1].length;
        } catch (f) {
              c = 0;
        }
          try {
              d = b.toString().split(".")[1].length;
        } catch (f) {
              d = 0;
        }
          return e = Math.pow(10,Math.max(c,d)),(multiNum(a,e) + multiNum(b,e)) / e;
    }
        
    //减法
        
    function subNum (a,b) {
        var c,d,e;
        try {
             c = a.toString().split(".")[1].length;
        } catch (f) {
              c = 0;
        }
        try {
            d = b.toString().split(".")[1].length;
        } catch (f) {
            d = 0;
        }
        return e = Math.pow(10,Math.max(c,d)),(multiNum(a,e) - multiNum(b,e)) / e; 
    }
    //乘法
    
    function multiNum (a,b){
        var c = 0,
        d = a.toString(),
        e = b.toString();
        try {
            c += d.split(".")[1].length;
        } catch (f) { }
        try {
            c += e.split(".")[1].length;
        } catch (f) { }
        return Number(d.replace(".","")) * Number(e.replace(".","")) / Math.pow(10,c);
    }
    
     //除法
    
    function divide (a,b){
        var c,d,e = 0,
        f = 0;
        try {
            e = a.toString().split(".")[1].length;
        } catch (g) { }
        try {
            f = b.toString().split(".")[1].length;
        } catch (g) { }
        return c = Number(a.toString().replace(".","")),d = Number(b.toString().replace(".","")),this.mul(c / d,Math.pow(10,f - e));
    }
  • 相关阅读:
    UVA-679車的摆放(DFS)
    全排列问题(递归调用)
    STL栈的应用—UVA673
    nefu 84 五指山(扩展欧几里德)
    POJ 1061 青蛙的约会(扩展欧几里德)
    nefu 116 两仪剑法
    nefu 115 斐波那契的整除
    HDU 2099 整除的尾数
    Codeforces Round #339 (Div. 2) B. Gena's Code
    Codeforces Round #339 (Div. 2) A. Link/Cut Tree
  • 原文地址:https://www.cnblogs.com/zui1024/p/12557992.html
Copyright © 2011-2022 走看看