笔记-Big.js的使用

big.js 是一个用于处理高精度小数计算的 JavaScript 库,避免了 JavaScript 中原生浮点数运算的精度问题。big.js 支持任意精度的小数运算,适用于金融、科学计算等需要高精度的场合。

安装 big.js

你可以通过 npm 或直接在 HTML 文件中引入 big.js

  1. 使用 npm 安装:

    bash 复制代码
    npm install big.js
  2. 使用 CDN 引入(在浏览器环境中):

    html 复制代码
    <script src="https://cdn.jsdelivr.net/npm/big.js@6.2.0/big.min.js"></script>

基本用法

1. 创建 Big 对象

你可以通过 new Big() 或者直接使用 Big() 来创建一个高精度数字对象。

javascript 复制代码
const Big = require('big.js'); // Node.js 环境

// 创建 Big 对象
const num1 = new Big(123.456);
const num2 = Big('78.90'); // 传入字符串形式的数字,避免精度丢失

2. 常见操作

big.js 提供了常见的数学运算方法,比如加法、减法、乘法、除法等。

javascript 复制代码
const a = new Big(10);
const b = new Big(3);

console.log(a.plus(b).toString()); // 加法:10 + 3 = 13
console.log(a.minus(b).toString()); // 减法:10 - 3 = 7
console.log(a.times(b).toString()); // 乘法:10 * 3 = 30
console.log(a.div(b).toString()); // 除法:10 / 3 ≈ 3.3333333333333335

// 限制小数位数,四舍五入
const result = a.div(b).toFixed(2); // 限制到两位小数
console.log(result); // 输出 "3.33"

3. 精度控制

big.js 默认采用四舍五入的方法处理精度,toFixed()toPrecision() 方法可以控制精度。

javascript 复制代码
const value = new Big(1.23456789);

console.log(value.toFixed(3)); // 保留3位小数: "1.235"
console.log(value.toPrecision(4)); // 保留4位有效数字: "1.235"

4. 常用方法

  • plus(): 加法
  • minus(): 减法
  • times(): 乘法
  • div(): 除法
  • mod(): 取模(余数)
  • abs(): 绝对值
  • sqrt(): 平方根
  • pow(): 幂运算
  • toFixed(): 四舍五入,控制小数位数
  • toPrecision(): 设置有效数字

5. 比较操作

你可以使用 gt(), lt(), eq() 等方法来进行比较。

javascript 复制代码
const a = new Big(10);
const b = new Big(20);

console.log(a.gt(b)); // false,a > b
console.log(a.lt(b)); // true,a < b
console.log(a.eq(b)); // false,a = b

6. 处理字符串

big.js 支持将数字转换为字符串进行处理,避免了常见的浮点数精度问题。

javascript 复制代码
const num = new Big(0.1);
const result = num.plus(0.2); // 0.1 + 0.2
console.log(result.toString()); // 输出 "0.3",精度不会丢失

7. 错误处理

big.js 会在无效的操作时抛出错误,例如除数为零的情况。

javascript 复制代码
const a = new Big(10);
const b = new Big(0);

try {
  console.log(a.div(b)); // 会抛出错误:Division by zero
} catch (error) {
  console.log(error.message); // 输出 "Division by zero"
}

代码示例

javascript 复制代码
const Big = require('big.js'); // 引入 big.js 库

// 示例:银行存款利率计算
const principal = new Big(1000);  // 本金
const rate = new Big(0.05); // 利率(5%)
const years = new Big(10); // 10年

// 计算复利
const amount = principal.times(rate.plus(1).pow(years)); 
console.log('Total amount after 10 years:', amount.toString()); // 复利后的总金额

总结

big.js 提供了高精度的数值运算方法,避免了 JavaScript 中原生浮点数运算的误差。它适用于需要精确控制小数点精度的场景,尤其在金融、科学计算等领域非常有用。

相关推荐
三天不学习8 分钟前
what?ngify 比 axios 更好用,更强大?
前端·axios·请求响应·ngify
2403_8751809521 分钟前
一键掌握多平台短视频矩阵营销/源码部署
java·前端·数据结构·线性代数·矩阵·php
Best_卡卡36 分钟前
前端性能-HTTP缓存
前端·http·缓存
GIS好难学1 小时前
《Openlayers零基础教程》第六课:地图控件
前端·javascript·零基础·openlayers
桃园码工3 小时前
3_CSS3 渐变 --[CSS3 进阶之路]
前端·css·css3·css3 渐变
NoneCoder3 小时前
JavaScript系列(22)--模块化进阶
开发语言·javascript·ecmascript
成长中的向日葵3 小时前
element-ui dialog弹窗 设置点击空白处不关闭
前端·vue.js
ihengshuai4 小时前
Gitlab流水线配置
前端·docker·gitlab·devops
alphaTabc4 小时前
从0到1实现一个插件系统
前端·javascript