当前位置: 首页 > article >正文

js 精确计算(加减乘除)

js 精确计算(加减乘除)

  • 工具类CalcUtil.js
class CalcUtil {
  // 两数相加
  calcAdd(num1, num2) {
    var r1, r2, m;
    try {
      r1 = num1.toString().split('.')[1].length;
    } catch (e) {
      r1 = 0;
    }
    try {
      r2 = num2.toString().split('.')[1].length;
    } catch (e) {
      r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    return (num1 * m + num2 * m) / m;
  }
  // 两数相减
  calcSub(num1, num2) {
    var r1, r2, m, n;
    try {
      r1 = num1.toString().split('.')[1].length;
    } catch (e) {
      r1 = 0;
    }
    try {
      r2 = num2.toString().split('.')[1].length;
    } catch (e) {
      r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    n = r1 >= r2 ? r1 : r2;
    return ((num1 * m - num2 * m) / m).toFixed(n);
  }
  // 两数相乘
  calcMult(num1, num2) {
    var m = 0,
      s1 = num1.toString(),
      s2 = num2.toString();
    try {
      m += s1.split('.')[1].length;
    } catch (e) {}
    try {
      m += s2.split('.')[1].length;
    } catch (e) {}
    return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m);
  }
  // 两数相除
  calcDiv(num1, num2) {
    var t1 = 0,
      t2 = 0,
      r1,
      r2;
    try {
      t1 = num1.toString().split('.')[1].length;
    } catch (e) {}
    try {
      t2 = num2.toString().split('.')[1].length;
    } catch (e) {}
    r1 = Number(num1.toString().replace('.', ''));
    r2 = Number(num2.toString().replace('.', ''));
    return (r1 / r2) * Math.pow(10, t2 - t1);
  }
}

export default new CalcUtil();


http://www.kler.cn/a/349946.html

相关文章:

  • 全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI
  • 开始步入达梦中级dba
  • 头像生成小程序搭建(免费分享)
  • 深度学习算法:从基础到实践
  • Python 预训练:打通视觉与大语言模型应用壁垒——Python预训练视觉和大语言模型
  • JQuery基本介绍和使用方法
  • ajax地址参数与data参数运用
  • 数据结构与算法:贪心算法与应用场景
  • Rust 与生成式 AI:从语言选择到开发工具的演进
  • 2-STM32入门
  • [LeetCode] 217. 存在重复元素
  • python中深拷贝和浅拷贝的区别
  • MySQL 大数据量导入与导出全攻略
  • 扫普通链接二维码打开小程序
  • 攻上云端,独立数据库OceanBase的生存之道
  • Flink算子状态为何只能用ListState?
  • 网络爬虫-数美滑块验证码
  • 24/10/12算法笔记 VGG
  • 交叉编译--目标平台aarch64 ubuntu 22.04
  • gaussdb 主备版本8 SQL参考 学习
  • Elasticsearch字段数据类型
  • 入侵及防护:7个迹象说明你的手机可能被入侵!
  • 涂鸦app宠物智能喂食器方案
  • javascript中`Math.ceil` 和 `Math.floor`的区别
  • 大数据和云计算
  • 用Spring AI 做智能客服,基于私有知识库和RAG技术