Skip to content

decimal.js 中文文档

任意精度(arbitrary-precision)十进制运算库 for JavaScript

decimal.js 是什么

decimal.js 是一个零依赖的 JavaScript 库,提供任意精度的十进制数类型 Decimal,用于解决原生 Number 的二进制浮点误差(如 0.1 + 0.2 !== 0.3)与位数限制(如超出 2⁵³ 的整数)问题。

它也是 math.js 内部使用的高精度运算库。

核心特性:

特性说明
整数与小数支持任意精度的十进制数
有效数字精度精度以**有效数字(significant digits)**计,而非小数位
全面舍入所有计算结果都按 precisionrounding 舍入(类似 Python decimal 模块)
数学函数三角函数、反三角函数、双曲函数、对数、指数、开方、幂等
进制支持可解析/输出二进制、八进制、十六进制(含小数与指数形式)
不可变对象方法不修改原对象,返回新 Decimal,可链式调用
兼容性好仅使用 ECMAScript 3 特性,浏览器 / Node.js / Deno 通用
类型完备附带 TypeScript 声明文件 decimal.d.ts
轻量变体不需要三角函数的场景可用 decimal.js-light

与同作者其他库的关系:

定位精度单位是否四舍五入所有运算
big.js最小、最简单小数位否(仅除法等)
bignumber.js功能较全小数位
decimal.js功能最全有效数字是(全部运算)

文档结构

文档内容适合谁
快速入门安装、导入、第一个程序、常用代码片段第一次接触的新手
核心概念精度、舍入、指数、不可变性、内部结构、精度陷阱想真正理解原理的学习者
构造函数与输入可接受的输入形式、进制、错误处理所有人
配置与舍入模式set/config/clone、全部配置项、9 种舍入模式需要定制行为的人
算术运算四则、取模、整除、幂、开方、取整、clamp 等所有人
比较与判断比较方法、is* 判断、NaN/Infinity 语义所有人
格式化与输出toString/toFixed/toPrecision/toFraction需要展示/传输数据的人
数学函数三角、反三角、双曲、对数、指数、random科学计算场景
最佳实践与常见坑实践建议、错误处理、性能、与同类库对比、坑清单工程实战
速查表全部方法一页速查、默认值速查随手翻阅

建议学习路线

新手:快速入门 → 速查表
进阶:核心概念 → 配置与舍入 → 算术运算/比较与判断/格式化与输出 API 参考
高阶:数学函数 → 最佳实践与常见坑
教授/回顾:以 速查表为纲,按需回到对应章节

三个最常用的知识点

js
const Decimal = require('decimal.js');

// 1. 传入字符串,避免 Number 精度损失
new Decimal('0.1').plus('0.2')     // '0.3'

// 2. 链式调用,方法不修改原值
new Decimal(0.3).minus(0.1)        // '0.2'

// 3. 按需配置精度(有效数字位数)与舍入模式
Decimal.set({ precision: 30, rounding: Decimal.ROUND_HALF_UP })

约定说明

  • 本文档示例中省略了 toString() 的显式调用;注释中以引号包裹的字符串表示该表达式调用 toString() 后的输出。
  • 所有示例输出均为 decimal.js 10.6.0 在 Node.js 下的实测结果。
  • 文档中「返回 Decimal」表示返回一个新的 Decimal 实例(原值不变)。