教程 decimaljs tutorial

舍入模式详解

decimal.js 提供多种舍入模式,用于控制数值运算结果的舍入行为,满足不同业务需求。

舍入模式枚举及含义

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

设置舍入模式

通过 Decimal.set() 全局设置舍入模式:

js
import Decimal from 'decimal.js';

// 设置为银行家舍入模式
Decimal.set({ rounding: 4 });

`

也可以在调用 .toDecimalPlaces() 等方法时单独指定舍入模式:

js
const a = new Decimal('1.345');

// 使用银行家舍入,保留两位小数
console.log(a.toDecimalPlaces(2, 4).toString()); // 输出 "1.34"

使用示例说明

js
const num1 = new Decimal('1.555');
const num2 = new Decimal('1.555');

Decimal.set({ rounding: 1 }); // 向下舍入
console.log(num1.toDecimalPlaces(2).toString()); // "1.55"

Decimal.set({ rounding: 3 }); // 四舍五入
console.log(num2.toDecimalPlaces(2).toString()); // "1.56"

选择建议

  • 对财务计算,通常选择银行家舍入(4)避免累计偏差。
  • 简单截断可用模式 0,适合某些技术计算场景。
  • 根据业务需求灵活设置。

掌握舍入模式配置,能有效避免运算误差,保证数值结果的准确性和业务一致性。