bignumber.js
是一个功能强大的 JavaScript 库,专门用于处理任意精度的算术运算。它在 GitHub 上托管,可以轻松集成到任何网页中。本指南将详细介绍 bignumber.js
的使用方法,帮助您充分利用其强大的功能。
构造函数
BigNumber
构造函数是创建 BigNumber
对象实例的基础。
var x = new BigNumber(123.4567); // '123.4567'
var y = BigNumber(x); // '123.4567',关键字 'new' 是可选的
BigNumber
支持多种数值格式,包括十进制、科学计数法、二进制、八进制和十六进制。
配置方法
BigNumber.config
方法允许您配置 BigNumber
的全局设置,确保运算结果的一致性和准确性。
BigNumber.config({
DECIMAL_PLACES: 5, // 设置操作结果保留的小数位数
ROUNDING_MODE: BigNumber.ROUND_HALF_UP // 设置舍入模式
});
详细配置选项
DECIMAL_PLACES
- 类型:整数
- 范围:0 到 1e+9
- 默认值:20
- 说明:控制除法、平方根、底数转换和负指数幂运算结果的小数位数。
ROUNDING_MODE
- 类型:整数
- 范围:0 到 8
- 默认值:4 (
ROUND_HALF_UP
) - 说明:定义舍入模式,影响
decimalPlaces
、precision
、toExponential
、toFixed
、toFormat
和toPrecision
方法。
EXPONENTIAL_AT
- 类型:整数或整数数组
- 范围:单一整数为 0 到 1e+9;数组时第一个整数为 -1e+9 到 0,第二个整数为 0 到 1e+9
- 默认值:[-7, 20]
- 说明:控制
toString
方法返回指数表示法的指数值。
RANGE
- 类型:整数或整数数组
- 范围:单一整数为 1 到 1e+9;数组时第一个整数为 -1e+9 到 -1,第二个整数为 1 到 1e+9
- 默认值:[-1e+9, 1e+9]
- 说明:定义指数值超出此范围时的上溢和下溢行为。
CRYPTO
- 类型:布尔值
- 默认值:false
- 说明:决定是否使用密码学安全的伪随机数生成。
MODULO_MODE
- 类型:整数
- 范围:0 到 9
- 默认值:1 (
ROUND_DOWN
) - 说明:定义计算模数时的舍入模式。
POW_PRECISION
- 类型:整数
- 范围:0 到 1e+9
- 默认值:0
- 说明:定义幂运算结果的显著数字的最大数量。
FORMAT
- 类型:对象
- 说明:配置
toFormat
方法返回字符串的格式。
ALPHABET
- 类型:字符串
- 默认值:'0123456789abcdefghijklmnopqrstuvwxyz'
- 说明:定义用于底数转换的字母表。
静态方法
BigNumber
构造函数提供了多种静态方法,方便在不创建实例的情况下进行操作。
clone
创建一个新的 BigNumber
构造函数,具有独立的配置。
var BN = BigNumber.clone({ DECIMAL_PLACES: 9 });
var x = new BN(1).div(3); // 使用新的构造函数
config
配置当前 BigNumber
构造函数的全局设置。
BigNumber.config({ DECIMAL_PLACES: 4 });
isBigNumber
检查一个值是否是 BigNumber
实例。
var x = new BigNumber(5);
console.log(BigNumber.isBigNumber(x)); // true
maximum / max
返回多个数值中的最大值。
var max = BigNumber.maximum(1, 2, 3); // '3'
minimum / min
返回多个数值中的最小值。
var min = BigNumber.minimum(1, 2, 3); // '1'
random
生成一个指定小数位数的伪随机数。
var rand = BigNumber.random(); // 例如 '0.4117936847'
sum
计算多个数值的总和。
var total = BigNumber.sum(1, 2, 3); // '6'
实例方法
BigNumber
实例提供了多种方法来进行数值操作和转换。
绝对值
获取 BigNumber
的绝对值。
var x = new BigNumber(-1.5);
var y = x.absoluteValue(); // '1.5'
比较
比较两个 BigNumber
的大小。
var x = new BigNumber(2);
var y = x.comparedTo(1); // 1
四则运算
执行基本的数学运算。
var x = new BigNumber(5);
var y = x.multipliedBy(2); // '10'
var z = x.minus(2); // '3'
整数除法
获取除法的整数部分。
var x = new BigNumber(5);
var y = x.dividedToIntegerBy(2); // '2'
幂运算
计算 BigNumber
的幂。
var x = new BigNumber(2);
var y = x.exponentiatedBy(3); // '8'
取整
四舍五入到最近的整数。
var x = new BigNumber(4.7);
var y = x.integerValue(); // '5'
判断方法
提供一系列方法来判断 BigNumber
的特性。
var x = new BigNumber(-3);
var y = x.isNegative(); // true
转换方法
将 BigNumber
转换为不同的格式。
var x = new BigNumber(1.23456789);
var y = x.toFixed(3); // '1.235'
格式化
根据指定格式输出 BigNumber
。
var x = new BigNumber(1234567.891);
var y = x.toFormat(); // '1,234,567.891'
分数形式
将 BigNumber
转换为分数形式。
var x = new BigNumber(1.75);
var y = x.toFraction(); // ['7', '4']
JSON 序列化
将 BigNumber
转换为 JSON 字符串。
var x = new BigNumber(1.23456789);
var y = JSON.stringify(x); // '"1.23456789"'
字符串表示
将 BigNumber
转换为字符串。
var x = new BigNumber(255);
var y = x.toString(16); // 'ff'
原始值
获取 BigNumber
的原始值。
var x = new BigNumber('-0');
var y = x.valueOf(); // '-0'
通过这些方法,bignumber.js
库提供了一种灵活且准确的方式来处理任意精度的数值运算,非常适合金融计算、科学计算等需要高精度的场合。