基础方法
a-calc 导出了一系列基础计算方法,支持多参数运算,性能优异。
方法列表
二元运算(支持多参数)
| 方法 | 描述 | 示例 |
|---|---|---|
add | 加法 | add(0.1, 0.2) → 0.3 |
sub | 减法 | sub(0.3, 0.1) → 0.2 |
mul | 乘法 | mul(0.1, 0.2) → 0.02 |
div | 除法 | div(0.3, 0.1) → 3 |
mod | 取模 | mod(10, 3) → 1 |
pow | 幂运算 | pow(2, 10) → 1024 |
idiv | 整除 | idiv(10, 3) → 3 |
一元运算
| 方法 | 描述 | 示例 |
|---|---|---|
abs | 绝对值 | abs(-5) → 5 |
neg | 取负 | neg(5) → -5 |
sqrt | 平方根 | sqrt(16) → 4 |
ln | 自然对数 | ln(2.718) → 0.999... |
exp | e 的 x 次方 | exp(1) → 2.718... |
基本用法
javascript
import { add, sub, mul, div, mod, pow, idiv, abs, neg, sqrt } from 'a-calc'
// 加法
add(0.1, 0.2) // 0.3 (number)
add(100, 200) // 300
// 减法
sub(0.3, 0.1) // 0.2
sub(100, 30) // 70
// 乘法
mul(0.1, 0.2) // 0.02
mul(99.9, 3) // 299.7
// 除法
div(0.3, 0.1) // 3
div(100, 3) // 33.33333...
// 取模
mod(10, 3) // 1
mod(100, 7) // 2
// 幂运算
pow(2, 10) // 1024
pow(10, 3) // 1000
// 整除
idiv(10, 3) // 3
idiv(100, 7) // 14
// 绝对值
abs(-5) // 5
abs(-3.14) // 3.14
// 取负
neg(5) // -5
neg(-3) // 3
// 平方根
sqrt(16) // 4
sqrt(2) // 1.4142135...多参数支持
二元运算函数支持多个参数,从左到右依次计算:
javascript
import { add, sub, mul, div } from 'a-calc'
// 多参数加法:1 + 2 + 3 + 4 + 5 = 15
add(1, 2, 3, 4, 5) // 15
// 多参数减法:100 - 20 - 30 = 50
sub(100, 20, 30) // 50
// 多参数乘法:2 × 3 × 4 = 24
mul(2, 3, 4) // 24
// 多参数除法:1000 / 10 / 5 = 20
div(1000, 10, 5) // 20返回类型
默认返回数字,可通过最后一个参数指定返回字符串:
javascript
import { add, mul, div } from 'a-calc'
// 返回数字(默认)
add(1, 2) // 3 (number)
// 返回字符串
add(1, 2, 'string') // '3' (string)
mul(2, 3, 'string') // '6' (string)
div(10, 4, 'string') // '2.5' (string)
// 多参数时,类型参数放在最后
add(1, 2, 3, 4, 'string') // '10' (string)函数签名
二元运算
typescript
function add(...args: (number | string)[]): number
function add(...args: [...(number | string)[], 'string']): string
function sub(...args: (number | string)[]): number
function mul(...args: (number | string)[]): number
function div(...args: (number | string)[]): number
function mod(a: number | string, b: number | string, type?: 'number' | 'string'): number | string
function pow(base: number | string, exp: number | string, type?: 'number' | 'string'): number | string
function idiv(a: number | string, b: number | string, type?: 'number' | 'string'): number | string一元运算
typescript
function abs(value: number | string, type?: 'number' | 'string'): number | string
function neg(value: number | string, type?: 'number' | 'string'): number | string
function sqrt(value: number | string, type?: 'number' | 'string'): number | string
function ln(value: number | string, type?: 'number' | 'string'): number | string
function exp(value: number | string, type?: 'number' | 'string'): number | string与 calc 对比
功能
| 特性 | 基础方法 | calc |
|---|---|---|
| 性能 | 更快 | 基准 |
| 格式化 | ❌ | ✅ |
| 变量 | ❌ | ✅ |
| 复杂表达式 | ❌ | ✅ |
| 单位计算 | ❌ | ✅ |
| 多参数 | ✅ | - |
使用场景
适合基础方法
- 简单的数值运算
- 批量数据处理
- 不需要格式化
适合 calc
- 复杂表达式
- 需要变量填充
- 需要格式化输出
实际应用
精确价格计算
javascript
import { mul, add } from 'a-calc'
const price = 99.9
const quantity = 3
const shipping = 10
const subtotal = mul(price, quantity) // 299.7
const total = add(subtotal, shipping) // 309.7统计计算
javascript
import { add, div, sqrt, sub, mul } from 'a-calc'
const values = [10, 20, 30, 40, 50]
// 求和
const sum = add(...values) // 150
// 平均值
const avg = div(sum, values.length) // 30
// 方差(简化示例)
const variance = div(
add(...values.map(v => mul(sub(v, avg), sub(v, avg)))),
values.length
) // 200
// 标准差
const stdDev = sqrt(variance) // 14.142...批量计算
javascript
import { add, mul } from 'a-calc'
const items = [
{ price: 10, qty: 2 },
{ price: 20, qty: 3 },
{ price: 15, qty: 1 }
]
// 使用 reduce 累加
const total = items.reduce((sum, item) => {
const itemTotal = mul(item.price, item.qty)
return add(sum, itemTotal)
}, 0)
// 95注意事项
- 参数可以是字符串或数字,内部会自动转换
- 除法除以零会抛出错误(可通过
set_config({ _error: '-' })配置返回值) - 使用多参数时,类型参数必须放在最后