教程 decimaljs tutorial

精度设置 config

decimal.js 提供灵活的全局配置选项,让你可以自定义数值计算的精度和舍入行为,满足不同业务场景的需求。

1. 设置默认精度(precision)

Decimal.precision 属性用于设置所有 Decimal 实例默认的有效数字位数(精度)。默认为 20。

js
import Decimal from 'decimal.js';

Decimal.set({ precision: 30 });

const a = new Decimal('1.23456789012345678901234567890123');
const b = new Decimal('0.00000000000000000000000000001234');

console.log(a.plus(b).toString());  // 计算时将使用 30 位有效数字精度

`

注意:精度越高,计算性能可能受到一定影响。

2. 舍入模式(rounding)

Decimal.rounding 属性设置舍入模式,决定结果如何四舍五入。常用的模式包括:

模式值 舍入方式 说明
0 向零舍入 截断
1 向下舍入(地板) 朝负无穷方向舍入
2 向上舍入(天花板) 朝正无穷方向舍入
3 四舍五入(默认) 四舍五入
4 银行家舍入 四舍五入到最接近的偶数

示例:

js
Decimal.set({ rounding: 1 });

const x = new Decimal('1.555');
console.log(x.toDecimalPlaces(2).toString());  // "1.55"

3. 指数范围(toExpNeg 和 toExpPos)

用于控制在转换为字符串时,何时以科学计数法表示。

  • Decimal.toExpNeg:当指数小于该值时,使用科学计数法(默认 -7)
  • Decimal.toExpPos:当指数大于该值时,使用科学计数法(默认 20)
js
Decimal.set({ toExpNeg: -5, toExpPos: 10 });

console.log(new Decimal('0.000001').toString());  // 不使用科学计数法
console.log(new Decimal('1e+15').toString());     // 使用科学计数法

通过合理配置这些参数,你可以让 decimal.js 的计算更加符合你的业务需求和表现形式。