精度设置 config
decimal.js 提供灵活的全局配置选项,让你可以自定义数值计算的精度和舍入行为,满足不同业务场景的需求。
1. 设置默认精度(precision)
Decimal.precision 属性用于设置所有 Decimal 实例默认的有效数字位数(精度)。默认为 20。
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 | 银行家舍入 | 四舍五入到最接近的偶数 |
示例:
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)
Decimal.set({ toExpNeg: -5, toExpPos: 10 });
console.log(new Decimal('0.000001').toString()); // 不使用科学计数法
console.log(new Decimal('1e+15').toString()); // 使用科学计数法
通过合理配置这些参数,你可以让 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 的优势。