Big.js: Big.js 是另一个类似于 Decimal.js 的高精度计算库,它也可以解决 JavaScript 浮点数计算的精度问题。
npm install big.js
const Big = require('big.js');const a = new Big('0.1');
const b = new Big('0.2');
const result = a.plus(b); // 使用 Big.js 进行加法运算console.log(result.toString()); // 输出 '0.3'
Big.js 库可以用于保留小数位数。它提供了一些方法来控制保留小数的精度。下面是一些示例:
1、保留特定小数位数:使用 Big.js 的
toFixed
方法可以保留指定的小数位数。
const Big = require('big.js');const num = new Big('123.456789');
const rounded = num.toFixed(2); // 保留两位小数console.log(rounded.toString()); // 输出 '123.46'
2、设置全局小数位数:你也可以在全局范围内设置 Big.js 对象的默认小数位数。
const Big = require('big.js');
Big.DP = 2; // 设置默认小数位数为 2const num = new Big('123.456789');
const rounded = num.toFixed(); // 默认保留两位小数console.log(rounded.toString()); // 输出 '123.46'
3、直接截断小数部分:如果只是想截断小数部分而不进行四舍五入,可以使用
toFixed(0)
const Big = require('big.js');const num = new Big('123.456789');
const truncated = num.toFixed(0); // 截断小数部分console.log(truncated.toString()); // 输出 '123'
BigNumber.js
也是一个可用于处理大数字和高精度计算的 JavaScript 库,类似于Big.js
和Decimal.js
。它可以处理浮点数的精度问题,并允许你控制数字的小数位数。npm install bignumber.js
1、保留小数位
const BigNumber = require('bignumber.js');const num = new BigNumber('123.456789');
const rounded = num.toFixed(2); // 保留两位小数console.log(rounded.toString()); // 输出 '123.46'
2、加减乘除
const BigNumber = require('bignumber.js');// 创建 BigNumber 实例
const num1 = new BigNumber('123.456');
const num2 = new BigNumber('78.9');// 加法
const sum = num1.plus(num2);
console.log('加法结果:', sum.toString()); // 输出 '202.356'// 减法
const difference = num1.minus(num2);
console.log('减法结果:', difference.toString()); // 输出 '44.556'// 乘法
const product = num1.times(num2);
console.log('乘法结果:', product.toString()); // 输出 '9743.9344'// 除法
const quotient = num1.dividedBy(num2);
console.log('除法结果:', quotient.toString()); // 输出 '1.564077
3、取余(求模)
const BigNumber = require('bignumber.js');const num1 = new BigNumber('123456789012345678901234567890');
const num2 = new BigNumber('123');const remainder = num1.modulo(num2);
console.log('取余结果:', remainder.toString()); // 输出 '33'
4、比较大小:
const BigNumber = require('bignumber.js');const num1 = new BigNumber('100');
const num2 = new BigNumber('200');const isGreaterThan = num1.isGreaterThan(num2);
const isLessThan = num1.isLessThan(num2);
const isEqualTo = num1.isEqualTo(num2);console.log('是否大于:', isGreaterThan); // 输出 false
console.log('是否小于:', isLessThan); // 输出 true
console.log('是否相等:', isEqualTo); // 输出 false