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

  • 相关阅读:
    php实现邮件自动发送之PHPMailer
    wnmp配置(windows+nginx+mysql+php开发环境)
    _stdcall和_cdecl,extern “C”的联系
    DLL导出的方式
    C++哈夫曼编码
    Python CGI 环境搭建
    Java学习日记——第二记:基本类型的类型转换
    测试技术的应用
    软件测试的分类
    软件测试生命周期
  • 原文地址:https://www.cnblogs.com/xiaoyaoweb/p/14601418.html
Copyright © 2011-2022 走看看