Skip to content
快看这页儿写了啥...

Number() 存储空间是多大?如后台发送一个超过最大存储数字怎么办?

题干

  • Number() 存储空间

  • 超过最大存储数字

题解

JS 中,Number() 是一个内置对象,用来表示数字。它采用 IEEE754标准 定义的 64 位浮点格式来存储数字。这个格式用 64 位存储数值,其中 051 存储数字(片段),5262 存储指数,63 位存储符号 1

这种格式能表示的最大值(Number.MAX_VALUE)为 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)为 ±5e-3241。如果超过这个范围,就会出现溢出或下溢的情况,导致数值不精确或变成无穷大。

如果后台发送了一个超过最大存储数字的数值,比如 900719925474099222,那么 JS 会把它转换成一个近似的数值,比如 9007199254740992002。这样就会造成数据的丢失或错误。

为了避免这种情况,有以下几种方法:

  • 使用字符串来表示大数,而不是数字。这样可以保持数值的完整性,但是不能进行运算或比较。

  • 使用 BigInt 类型来表示大数。BigIntES2020 引入的一种新的原始类型,可以表示任意精度的整数。它可以和 Number 类型进行混合运算,但是要注意类型转换和兼容性问题。

  • 使用第三方库来处理大数,比如 bignumber.jsdecimal.js 等。这些库提供了一些方法和工具来操作和格式化大数。

相关

JS 实现大数字相加方法

JS 中 0.1+0.2 != 0.3

怎样让 0.1+0.2 等于 0.3

贡献者

isboyjc's avatar isboyjc

浏览量(PV)  次  ·  独立访客(UV)  人次
不正经的前端 | 八股 · 欢迎 star ⭐