IEEE754的float和double中小于1的最大值

一个单、双精度浮点在1以内最大能为多少?

单精度float(32位)

float32位单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位表示指数,用 23 位表示尾数。

float

而其小于1的最大值:

二进制表示为:0 01111110 11111111111111111111111
十进制表示为:0.999999940395355224609375
十六进制表示为:0x3f7fffff

双精度double(64位)

double64位双精度浮点数在机器中表示用 1 位表示数字的符号,用 11 位表示指数,用 52 位表示尾数。

double

而其小于1的最大值:

二进制表示为:0 01111111110 1111111111111111111111111111111111111111111111111111
十进制表示为:0.999999999999999888977697537484
十六进制表示为:0x3FEFFFFFFFFFFFFF