# 财务系统应用

URL: https://caijiao.org/decimaljs/10-cases/02-finance
Source: docs/decimaljs/10-cases/02-finance.md
Description: 使用 decimal.js 实现财务系统中的金额计算，确保计算结果准确，避免浮点误差影响财务数据的正确性。

财务系统对金额的精度和计算的准确性要求极高，传统 JavaScript Number 类型因浮点误差不适用，decimal.js 提供了可靠的解决方案。

## 示例场景

计算多笔交易的累计金额，包括加法、减法及舍入，保证账目清晰无误。

```js
import Decimal from 'decimal.js';

// 模拟多笔交易金额
const transactions = [
  new Decimal('1234.56'),
  new Decimal('-234.50'),
  new Decimal('987.12'),
  new Decimal('-100.00'),
];

// 累加所有交易金额
let balance = new Decimal(0);
for (const amount of transactions) {
  balance = balance.plus(amount);
}

// 保留两位小数，采用银行家舍入
balance = balance.toDecimalPlaces(2, Decimal.ROUND_HALF_EVEN);

console.log(`账户余额: $${balance.toString()}`);
// 输出: 账户余额: $1887.18
````

## 关键点说明

* 所有金额使用 Decimal 类型，避免精度丢失。
* 累计加法支持正负数，适合收支账目计算。
* 采用银行家舍入（ROUND\_HALF\_EVEN），符合财务规范。
* 保持统一的金额格式，方便后续报表和审计。

---

利用 decimal.js，财务系统能够准确处理复杂金额计算，保证数据的完整性和业务合规性。
