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 的数字精度限制
- 部分方法有输入值限制,请参考方法注释