Skip to content

计算模式 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/false

wcalc(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比较

基于 MIT 许可发布