float类型能精确表达整型数100亿和1000亿吗?

来源:互联网 发布:北京赛车源码 编辑:程序博客网 时间:2024/06/05 09:11

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类型精确表达。

 

 
原创粉丝点击