3.JS超过Number最大数怎么处理?

在JS中呢,超过Number.MAX_VALUE的数值被认为是Infinity(正无穷大),如果要处理超过最大值的数据,可以使用第三方库big.js或者是bignumber.js,这些库可以处理任意精度的数值

1. 场景

  • 大数据的计算会出现这种情况
    • 计算的来的
    • 金融场景
      • 用户的金额1.11111111
    • 科学计算
      • 两个大的数值进行计算
  • 数据分析
  • 格式展示
    • 后端返回的
  • 用户输入
    • 从input框输入组件中获取的

2. 方案

  • BigInt
    • 在新的规范中推荐的这个大数的数据类型
const bigNum=BigInt('1111111112123213247328947893274893274892374823')
bigNum+bigNum
  • 第三方库
    • decimal.js
const Decimal=new Decimal('21387219372019839012839012839')
const Decimal=new Decimal('1e+308')
  • big.js

在需求层面上能不能直接解决这个问题,比如用户输入的时候,限制输入长度或者数字的大小

3. 总结

  1. bigint处理大数据
  2. decimal 来处理
  3. big.js 来处理
  4. 格式化,格式化成用户好读的格式 100000000000 1亿
  5. 表单校验,不允许用户输入超过多少位的数字