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

  • 相关阅读:
    视图,触发器,事物,储存过程,函数,流程控制
    mysql之其他
    web前端之html
    mysql之索引
    Android minHeight/Width,maxHeight/Width
    Android GridView(九宫图)
    Android padding和margin的区别
    android:scaleType属性
    android:visibility
    Android RelativeLayout常用属性介绍
  • 原文地址:https://www.cnblogs.com/xiaoyaoweb/p/14601418.html
Copyright © 2011-2022 走看看