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