toFixed() 保留小数不精准,大数据计算 bignumber.js、big.js

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; // 设置默认小数位数为 2

const 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.jsDecimal.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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值