跳转至

CMX 计算工具使用说明

概述

CMX 是一个高精度数学计算工具类,解决了 JavaScript 浮点数运算的精度问题,提供各种数学运算的精确计算方法。

安装与导入

import { cmx } from './calc';

基本运算方法

加法

/**
 * 精确加法运算(支持多个参数)
 * @param args 要相加的数字序列
 * @returns 所有数字的和
 */
cmx.add(0.1, 0.2); // 返回 0.3
cmx.add(1, 2, 3); // 返回 6

减法

/**
 * 精确减法运算
 * @param arg1 被减数
 * @param arg2 减数
 * @returns 两数之差
 */
cmx.sub(0.3, 0.1); // 返回 0.2

乘法

/**
 * 精确乘法运算(支持多个参数)
 * @param args 要相乘的数字序列
 * @returns 所有数字的乘积
 */
cmx.mul(0.1, 0.2); // 返回 0.02
cmx.mul(2, 3, 4); // 返回 24

除法

/**
 * 精确除法运算
 * @param arg1 被除数
 * @param arg2 除数
 * @returns 两数之商
 * @throws {Error} 除数为零时抛出错误
 */
cmx.div(0.3, 0.1); // 返回 3

高级数学运算

四舍五入

/**
 * 精确四舍五入
 * @param num 要舍入的数字
 * @param decimalPlaces 保留的小数位数(默认为0)
 */
cmx.round(1.2345, 2); // 返回 1.23

百分比计算

/**
 * 计算百分比值
 * @param value 基础值
 * @param percent 百分比
 */
cmx.percent(200, 15); // 返回 30(200的15%)

平均数

/**
 * 计算平均数
 * @param args 要计算平均数的数字序列
 */
cmx.average(1, 2, 3); // 返回 2

近似相等判断

/**
 * 判断两个数是否近似相等(解决浮点数精度问题)
 */
cmx.approxEqual(0.1 + 0.2, 0.3); // 返回 true

特殊数学函数

自然对数

/**
 * 计算自然对数(ln(x))
 * @throws {Error} 当输入小于等于0时抛出错误
 */
cmx.ln(1); // 返回 0
cmx.ln(Math.E); // 返回 1

指数函数

/**
 * 高精度指数函数
 */
cmx.exp(1); // 返回 2.7182818285
cmx.exp(-3.5); // 返回 0.0301973834

平方根

/**
 * 精确计算平方根
 * @throws {Error} 输入负数时抛出
 */
cmx.sqrt(2); // 返回 1.4142135624

安全对数

/**
 * 安全对数计算(解决Math.log的边界问题)
 */
cmx.safeLog(-1); // 返回 NaN
cmx.safeLog(0); // 返回 -Infinity

阶乘

/**
 * 精确阶乘
 */
cmx.factorial(20); // 返回 2432902008176640000

双曲函数

/**
 * 双曲函数精确计算
 */
cmx.hypFunc(1, 'tanh'); // 返回 0.761594156

组合数学

排列组合

/**
 * 精确排列组合计算
 */
cmx.permComb(100, 5, 'combination'); // 返回 75287520

最大公约数/最小公倍数

cmx.gcd(48, 18); // 返回 6
cmx.lcm(12, 15); // 返回 60

注意事项

  • 所有方法都经过高精度处理,适合财务、科学等需要精确计算的场景
  • 大数计算时注意 JavaScript 的数字精度限制
  • 部分方法有输入值限制,请参考方法注释