计算模式 API
计算模式系统的完整 API 参考。
导入
js
import {
// 配置管理
set_config,
get_config,
// WASM 相关
load_wasm,
is_wasm_loaded,
wcalc,
// r* 前缀函数(跟随当前模式)
radd, rsub, rmul, rdiv, rmod, rpow, ridiv,
rabs, rneg, rsqrt, rcbrt,
rexp, rln, rlog, rlog2, rlog10,
rsin, rcos, rtan, rasin, racos, ratan,
rsinh, rcosh, rtanh, rasinh, racosh, ratanh,
rfloor, rceil, rtrunc, rround,
rmax, rmin, rcompare, req, rlt, rgt, rlte, rgte
} from 'a-calc'模式管理
设置计算模式
使用 set_config 设置计算模式:
js
import { set_config, get_config } from 'a-calc'
// 设置为 BigInt 模式
set_config({ _compute_mode: 'bigint' })
// 设置为 WASM 模式
set_config({ _compute_mode: 'wasm' })
// 设置为 Decimal 模式(默认)
set_config({ _compute_mode: 'decimal' })
// 获取当前模式
get_config('_compute_mode') // "decimal"可用模式
| 模式 | 值 | 说明 |
|---|---|---|
| Decimal | 'decimal' | 高精度十进制计算(默认) |
| BigInt | 'bigint' | 大整数 + 动态 scale |
| WASM | 'wasm' | WebAssembly 高性能计算 |
r* 前缀函数
r* 前缀函数会根据当前 _compute_mode 配置自动使用对应的计算模式。输入输出均为字符串。
基础运算
js
import { radd, rsub, rmul, rdiv, rmod, rpow, ridiv } from 'a-calc'
radd("0.1", "0.2") // "0.3"
rsub("1", "0.3") // "0.7"
rmul("0.1", "0.2") // "0.02"
rdiv("1", "4") // "0.25"
rmod("10", "3") // "1"
rpow("2", "10") // "1024"
ridiv("10", "3") // "3"一元运算
js
import { rabs, rneg, rsqrt, rcbrt } from 'a-calc'
rabs("-5") // "5"
rneg("5") // "-5"
rsqrt("16") // "4"
rcbrt("27") // "3"指数对数
js
import { rexp, rln, rlog, rlog2, rlog10 } from 'a-calc'
rexp("1") // "2.718281828..."
rln("2.718281828") // "0.999..."
rlog("100", "10") // "2"
rlog2("8") // "3"
rlog10("100") // "2"三角函数
js
import { rsin, rcos, rtan, rasin, racos, ratan } from 'a-calc'
rsin("0") // "0"
rcos("0") // "1"
rtan("0") // "0"
rasin("0") // "0"
racos("1") // "0"
ratan("0") // "0"双曲函数
js
import { rsinh, rcosh, rtanh, rasinh, racosh, ratanh } from 'a-calc'
rsinh("0") // "0"
rcosh("0") // "1"
rtanh("0") // "0"
rasinh("0") // "0"
racosh("1") // "0"
ratanh("0") // "0"取整运算
js
import { rfloor, rceil, rtrunc, rround } from 'a-calc'
rfloor("3.7") // "3"
rceil("3.2") // "4"
rtrunc("3.7") // "3"
rround("3.5") // "4"比较运算
js
import { rmax, rmin, rcompare, req, rlt, rgt, rlte, rgte } from 'a-calc'
rmax("3", "5") // "5"
rmin("3", "5") // "3"
rcompare("1", "2") // -1
req("1.0", "1") // true
rlt("1", "2") // true
rgt("2", "1") // true
rlte("1", "1") // true
rgte("2", "1") // true直接模式函数
除了 r* 函数(跟随配置),还可以直接使用特定模式的函数:
d* 前缀(Decimal 模式)
js
import { dadd, dsub, dmul, ddiv } from 'a-calc'
dadd("0.1", "0.2") // "0.3"(始终使用 Decimal)b* 前缀(BigInt 模式)
js
import { badd, bsub, bmul, bdiv } from 'a-calc'
badd("0.1", "0.2") // "0.3"(始终使用 BigInt)w* 前缀(WASM 模式)
js
import { wadd, wsub, wmul, wdiv } from 'a-calc'
// 需要先加载 WASM
await load_wasm()
wadd("0.1", "0.2") // "0.3"(始终使用 WASM)WASM 相关函数
load_wasm()
异步加载 WASM 模块。
js
import { load_wasm } from 'a-calc'
await load_wasm()
// 或指定 WASM 文件路径
await load_wasm('/path/to/wasm_calc_bg.wasm')is_wasm_loaded()
检查 WASM 模块是否已加载。
js
import { is_wasm_loaded } from 'a-calc'
is_wasm_loaded() // true/falsewcalc(expr)
WASM 表达式计算。直接传入复杂表达式字符串。
js
import { load_wasm, wcalc } from 'a-calc'
await load_wasm()
wcalc("1 + 2 * 3") // "7"
wcalc("sqrt(16) + pow(2, 3)") // "12"
wcalc("sin(0) + cos(0)") // "1"配置项
_compute_mode
设置计算模式。
js
set_config({ _compute_mode: 'bigint' })_div_precision
设置 BigInt 模式的除法精度。默认 20 位。
js
set_config({ _div_precision: 30 })
// BigInt 模式下
rdiv("1", "3") // "0.333333333333333333333333333333"(30位小数)_error
设置错误时的返回值。
js
set_config({ _error: 'N/A' })
rdiv("1", "0") // "N/A" 而不是抛异常完整函数列表
r* 函数(跟随 _compute_mode 配置)
| 函数 | 说明 |
|---|---|
radd, rsub, rmul, rdiv, rmod, rpow, ridiv | 基础运算 |
rabs, rneg, rsqrt, rcbrt | 一元运算 |
rexp, rln, rlog, rlog2, rlog10 | 指数对数 |
rsin, rcos, rtan, rasin, racos, ratan | 三角函数 |
rsinh, rcosh, rtanh, rasinh, racosh, ratanh | 双曲函数 |
rfloor, rceil, rtrunc, rround | 取整 |
rmax, rmin, rcompare, req, rlt, rgt, rlte, rgte | 比较 |
d* 函数(Decimal 模式)
| 函数 | 说明 |
|---|---|
dadd, dsub, dmul, ddiv, dmod, dpow, didiv | 基础运算 |
dabs, dneg, dsqrt, dcbrt | 一元运算 |
dexp, dln, dlog, dlog2, dlog10 | 指数对数 |
dsin, dcos, dtan, dasin, dacos, datan | 三角函数 |
dsinh, dcosh, dtanh, dasinh, dacosh, datanh | 双曲函数 |
dfloor, dceil, dtrunc, dround | 取整 |
dmax, dmin, dcompare, deq, dlt, dgt, dlte, dgte | 比较 |
b* 函数(BigInt 模式)
| 函数 | 说明 |
|---|---|
badd, bsub, bmul, bdiv, bmod, bpow, bidiv | 基础运算 |
babs, bneg, bsqrt, bcbrt | 一元运算 |
bexp, bln, blog, blog2, blog10 | 指数对数 |
bsin, bcos, btan, basin, bacos, batan | 三角函数 |
bsinh, bcosh, btanh, basinh, bacosh, batanh | 双曲函数 |
bfloor, bceil, btrunc, bround | 取整 |
bmax, bmin, bcompare, beq, blt, bgt, blte, bgte | 比较 |
w* 函数(WASM 模式)
| 函数 | 说明 |
|---|---|
wadd, wsub, wmul, wdiv, wmod, wpow, widiv | 基础运算 |
wabs, wneg, wsqrt, wcbrt | 一元运算 |
wexp, wln, wlog, wlog2, wlog10 | 指数对数 |
wsin, wcos, wtan, wasin, wacos, watan | 三角函数 |
wsinh, wcosh, wtanh, wasinh, wacosh, watanh | 双曲函数 |
wfloor, wceil, wtrunc, wround | 取整 |
wmax, wmin, wcompare, weq, wlt, wgt, wlte, wgte | 比较 |