什么是完整版号:1.7976931348623158E+308?
What is the full version of the number: 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
常见的DBL_MAX
的近似值是
printf("%.*e\n", DBL_DECIMAL_DIG-1, DBL_MAX);
// 1.7976931348623157e+308
通常,DBL_DECIMAL_DIG
(例如 17)位有效的小数位就足够了。
普通DBL_MAX
的exactly value 是
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0
要在十六进制有效/十进制基数 2 指数中找到精确值,请使用
printf("%a\n", DBL_MAX);
// 0x1.fffffffffffffp+1023
如果你想要更短的形式,IEEE754 max (finite) double 是 2^1024 - 2^(1024-53)
。
使用任何大整数算术包来打印它。
我一直在网上搜索,发现 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
常见的DBL_MAX
的近似值是
printf("%.*e\n", DBL_DECIMAL_DIG-1, DBL_MAX);
// 1.7976931348623157e+308
通常,DBL_DECIMAL_DIG
(例如 17)位有效的小数位就足够了。
普通DBL_MAX
的exactly value 是
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0
要在十六进制有效/十进制基数 2 指数中找到精确值,请使用
printf("%a\n", DBL_MAX);
// 0x1.fffffffffffffp+1023
如果你想要更短的形式,IEEE754 max (finite) double 是 2^1024 - 2^(1024-53)
。
使用任何大整数算术包来打印它。