100亿:
100亿 = 10000000000
用 float 类型在内存中的表示为:0x501502F9
展开为二进制形式:0 10100000 00101010000001011111001
指数部分:10100000 = 160
还原为整型数:1.00101010000001011111001 * 2^(160-127)
= 1001010100000010111110010000000000 (二进制)
= 10000000000 (十进制)
1000亿:
1000亿 = 100000000000
用 float 类型在内存中的表示为:0x51BA43B7
展开为二进制形式:0 10100011 01110100100001110110111
指数部分:10100011 = 163
还原为整型数:1.01110100100001110110111 * 2^(163-127)
= 1011101001000011101101110000000000000 (二进制)
= 99999997952 (十进制)
结论:
1、 float类型能精确表达 100亿,不能精确表达 1000亿。
2、 float类型能表达的有效数字最小是 6-7位,最大未知。
3、 从 -16777216 到 16777216 之间的整数能被float类型精确表达。