zoukankan      html  css  js  c++  java
  • 运算精度问题https://blog.csdn.net/smile_ping/article/details/80284969

    export default {
    add(num1, num2) {
    let r1;
    let r2;
    try { r1 = num1.toString().split('.')[1].length; } catch (e) { r1 = 0; }
    try { r2 = num2.toString().split('.')[1].length; } catch (e) { r2 = 0; }
    const m = 10 ** Math.max(r1, r2);
    const n = (r1 >= r2) ? r1 : r2;
    return ((num1 * m + num2 * m) / m).toFixed(n);
    },
    sub(num1, num2) {
    let r1;
    let r2;
    try { r1 = num1.toString().split('.')[1].length; } catch (e) { r1 = 0; }
    try { r2 = num2.toString().split('.')[1].length; } catch (e) { r2 = 0; }
    const n = (r1 >= r2) ? r1 : r2;
    const m = 10 ** Math.max(r1, r2);
    return ((num1 * m - num2 * m) / m).toFixed(n);
    },
    mul(num1, num2) {
    let m = 0;
    try { m += num1.toString().split('.')[1].length; } catch (e) { m += 0; }
    try { m += num2.toString().split('.')[1].length; } catch (e) { m += 0; }
    return (Number(num1.toString().replace('.', '')) * Number(num2.toString().replace('.', ''))) / (10 ** m);
    },
    div(arg1, arg2) {
    let t1;
    let t2;
    try { t1 = arg1.toString().split('.')[1].length; } catch (e) { t1 = 0; }
    try { t2 = arg2.toString().split('.')[1].length; } catch (e) { t2 = 0; }
    const r1 = Number(arg1.toString().replace('.', ''));
    const r2 = Number(arg2.toString().replace('.', ''));
    return (r1 / r2) * (10 ** (t2 - t1));
    },
    };
    你对生活笑,生活不会对你哭。
  • 相关阅读:
    golang json处理
    关于单例模式中懒汉模式和饿汉模式的学习
    关于Lambda表达式的研究
    左值和右值得研究
    关于epoll的详解说明关于epoll的详解说明
    关于c++中条件变量的分析
    关于c++种std::function和bind的用法
    关于iterator_traits的使用
    STL容器之deque数据结构解析
    STL容器之Array的用法
  • 原文地址:https://www.cnblogs.com/adanxiaobo/p/9619200.html
Copyright © 2011-2022 走看看