zoukankan      html  css  js  c++  java
  • js 浮点数加减乘除 小数不报错

    错误: 下边的算法数字足够大时还是会出现问题

    function add(a, b) {

     const m=1000000000;

     return  (a*m + b*m)  /m

    }

    正确:

    function add(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)), (mul(a, e) + mul(b, e)) / e;
    }

    function sub(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)), (mul(a, e) - mul(b, e)) / e;
    }

    function mul(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 div(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(".", "")), mul(c / d, Math.pow(10, f - e));
    }


    原文链接:https://blog.csdn.net/qinshenxue/article/details/43671763

  • 相关阅读:
    cf 1452E. Two Editorials(中点排序)
    cf 888G
    cf 1447E. Xor Tree(二进制分治)
    2020ICPC·小米 网络选拔赛第一场 E-Phone Network (线段树)
    cf 1447D. Catching Cheaters ( 最大子段和思想 dp )
    POJ
    cf 1437F.Emotional Fishermen(计数dp)
    霍夫丁不等式
    切比雪夫不等式
    霍夫丁不等式引理证明
  • 原文地址:https://www.cnblogs.com/xiaoyaoweb/p/14601418.html
Copyright © 2011-2022 走看看