主题
舍入模式详解
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,适合某些技术计算场景。
- 根据业务需求灵活设置。
掌握舍入模式配置,能有效避免运算误差,保证数值结果的准确性和业务一致性。