在 Javascript、Python 等语言中,使用 IEEE754 标准作为其浮点数规范。因此存在一个耳熟能详的问题,这道题也作为八股文,是面试中的常客。
0.1 + 0.2 == 0.30000000000000004
甚至,在 Javascript 中,仅有 number
一个类型,无整数与浮点数之分,其整数也由双精度浮点数来存储。由此也带来整数的精度问题,如最大安全整数。
> Number.MAX_SAFE_INTEGER
9007199254740991
> Number.MAX_SAFE_INTEGER + 1
9007199254740992
> Number.MAX_SAFE_INTEGER + 2
9007199254740992
> Number.MAX_SAFE_INTEGER + 3
9007199254740994
> Number.MAX_SAFE_INTEGER + 4
9007199254740996
1.1 * 10 ** 1010
,翻译为十进制是 1.5 * 2 ** 10
。其中 .1
为尾数位,1010
为指数位。1023
,二进制表示为 1111111111
。