货币计算示例
在财务和电商领域,金额计算要求高度精确,避免原生 JavaScript 浮点数误差。decimal.js 提供了可靠的解决方案。
示例场景
计算购物车中多个商品的总价,涉及加法、乘法和舍入。
import Decimal from 'decimal.js';
// 商品单价与数量
const price1 = new Decimal('19.99');
const quantity1 = new Decimal(3);
const price2 = new Decimal('5.75');
const quantity2 = new Decimal(10);
// 计算总价(单价 * 数量)
const total1 = price1.times(quantity1);
const total2 = price2.times(quantity2);
// 计算购物车总价
const cartTotal = total1.plus(total2);
// 保留两位小数,常用于金额显示
const finalAmount = cartTotal.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);
console.log(`购物车总价: $${finalAmount.toString()}`);
// 输出: 购物车总价: $97.45
`
重点说明
- 使用
.times()做乘法,保证单价与数量的准确计算。 - 使用
.plus()做加法,避免累积误差。 - 使用
.toDecimalPlaces(2, Decimal.ROUND_HALF_UP)保留两位小数,并采用银行家舍入,符合财务规范。
建议
- 所有金额运算使用 decimal.js 类型,避免使用原生 Number。
- 统一设置全局舍入模式,确保一致性。
- 显示金额时统一格式化,避免用户界面出现多种精度。
通过 decimal.js 实现货币计算,可以避免精度误差,提升财务数据的准确性和用户体验。
相关内容
- 为什么需要 decimal.js JavaScript 原生数字类型存在浮点精度问题,导致金融、科学计算等场景出现误差。decimal.js 提供高精度的小数计算支持,解决原生数值缺陷,适合复杂...
- JS 浮点数精度问题示例 介绍 JavaScript 原生浮点数的精度问题,展示常见的计算误差示例及其影响,并引出高精度计算库 decimal.js 作为解决方案。
- decimal.js 的优势 介绍 decimal.js 库在高精度计算中的优势,包括任意精度支持、丰富的运算功能、多种舍入模式和易用的 API 设计。
- 安装方式 介绍如何在不同环境下安装和引入 decimal.js,包括 npm、yarn 和浏览器 CDN,助你快速集成高精度计算功能。
- 基本使用示例 通过简单示例介绍 decimal.js 的基本用法,包括创建实例和进行常见的加减乘除运算。
- decimal.js 与原生 Number 的对比 通过示例对比 decimal.js 和 JavaScript 原生 Number 类型在数值精度和计算准确性方面的差异,说明 decimal.js 的优势。