Number(44211572582780928)
为啥会输出 44211572582780930
|  |      1VeryZero      2022-08-24 16:57:18 +08:00 精度丢失 | 
|      2memedahui      2022-08-24 16:57:21 +08:00 js 精度问题,一般的语言都是这种问题了,java 用 bigdecimal 类,js 推荐用 bignumber.js | 
|      3hkyshefavor      2022-08-24 17:00:50 +08:00 超过 Number.MAX_SAFE_INTEGER 值了,精度丢失 | 
|  |      4foolnius      2022-08-24 17:01:23 +08:00 可以通过 Number.MAX_SAFE_INTEGER 查看最大值 | 
|  |      5Guidoo OP | 
|      6yukinotech      2022-08-24 17:06:41 +08:00 安利一下自己写的库,https://github.com/yukinotech/JSBD ,实现 tc39 bigdecimal 提案 https://github.com/tc39/proposal-decimal | 
|      7Jooooooooo      2022-08-24 17:09:45 +08:00 大数字都建议直接用 string 省事. | 
|      8seakingii      2022-08-24 17:22:19 +08:00 @Guidoo 别人都说精度丢失了还问为啥 .... - 实在要了解底层原因,建议去看计算机硬件相关的入门书籍 - 简单的说,用有限的硬件空间来存储无限的浮点数字难(比如浮点数 1/3 = 0.3333333333333333....),必须要在精度上有个取舍 - 如果只是存储之类的,可以用字符串,如果要运算,可以考虑 bignumber.js 这类的外部库 | 
|  |      9dudubaba      2022-08-24 19:09:52 +08:00 判断最大安全值 Number.isSafeInteger() 来判断整数的合法性,当超过时可以转换为字符串或者用 BigInt(44211572582780928) | 
|      10mxT52CRuqR6o5      2022-08-24 19:11:16 +08:00  1 IEEE 754 | 
|      13Jobing      2022-11-05 21:41:03 +08:00 精度丢失,可以用 npm 库 搜索 json-bn 开源库解决。 |