笔记-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 中原生浮点数运算的误差。它适用于需要精确控制小数点精度的场景,尤其在金融、科学计算等领域非常有用。

相关推荐
我命由我1234523 分钟前
软件开发 - 避免过多的 if-else 语句(使用策略模式、使用映射表、使用枚举、使用函数式编程)
java·开发语言·javascript·设计模式·java-ee·策略模式·js
萌萌哒草头将军33 分钟前
Node.js v24.6.0 新功能速览 🚀🚀🚀
前端·javascript·node.js
AALoveTouch2 小时前
大麦APP抢票揭秘
javascript
持久的棒棒君2 小时前
启动electron桌面项目控制台输出中文时乱码解决
前端·javascript·electron
小离a_a3 小时前
使用原生css实现word目录样式,标题后面的...动态长度并始终在标题后方(生成点线)
前端·css
郭优秀的笔记3 小时前
抽奖程序web程序
前端·css·css3
布兰妮甜4 小时前
CSS Houdini 与 React 19 调度器:打造极致流畅的网页体验
前端·css·react.js·houdini
小小愿望4 小时前
ECharts 实战技巧:揭秘 X 轴末项标签 “莫名加粗” 之谜及破解之道
前端·echarts
小小愿望4 小时前
移动端浏览器中设置 100vh 却出现滚动条?
前端·javascript·css
fail_to_code4 小时前
请不要再只会回答宏任务和微任务了
前端