Skip to content

基础方法

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...
expe 的 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

注意事项

  1. 参数可以是字符串或数字,内部会自动转换
  2. 除法除以零会抛出错误(可通过 set_config({ _error: '-' }) 配置返回值)
  3. 使用多参数时,类型参数必须放在最后

基于 MIT 许可发布