【发布时间】:2021-12-26 08:36:59
【问题描述】:
我一直在互联网上搜索,发现 1.7976931348623158E+308 作为最高浮点值。可以给我完整版吗?
【问题讨论】:
我一直在互联网上搜索,发现 1.7976931348623158E+308 作为最高浮点值。可以给我完整版吗?
【问题讨论】:
我不太清楚您所说的“完整版”是什么意思,但假设采用 IEEE-754 格式,以下是最大双精度值的表示方式:
VALUE = 1.7976931348623157e308 :: Double
6 5 4 3 2 1 0
3 21098765432 1098765432109876543210987654321098765432109876543210
S ----E11---- ------------------------S52-------------------------
Binary layout: 0 11111111110 1111111111111111111111111111111111111111111111111111
Hex layout: 7FEF FFFF FFFF FFFF
Precision: Double
Sign: Positive
Exponent: 1023 (Stored: 2046, Bias: 1023)
Classification: FP_NORMAL
Binary: 0b1.1111111111111111111111111111111111111111111111111111p+1023
Octal: 0o1.777777777777777774p+1023
Decimal: 1.7976931348623157e308
Hex: 0xF.FFFFFFFFFFFF8p+1020
【讨论】:
如果您想要更短的形式,IEEE754 max (finite) double 是 2^1024 - 2^(1024-53)。
使用任何大整数算术包来打印它。
【讨论】:
普通DBL_MAX的近似值为
printf("%.*e\n", DBL_DECIMAL_DIG-1, DBL_MAX);
// 1.7976931348623157e+308
通常,DBL_DECIMAL_DIG(例如 17)位有效十进制数字就足够了。
普通DBL_MAX 的exactly value 是
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 P>
要找到十六进制有效/以 2 为底的十进制指数的确切值,请使用
printf("%a\n", DBL_MAX);
// 0x1.fffffffffffffp+1023
【讨论】:
DBL_MAX? OP 没有指明一种语言、一个平台、一个标准,甚至一个星球。我们所知道的只是“浮点数”