请教float的取值范围!
请解释原因,谢谢!谭浩强的C语言上应该有的 楼上的太有才了![tk04] 你既然知道为何不COPY一下呢?[tk04] 没人回答,继续问,不懂就问,啊咋咋地……[tk05] 坚持不懈,继续问,诺大的一个论坛,真的没人才了吗?[tk07] 仍旧问![tk09] 百度搜 搜不到,搜到的大多是错解,求权威回答……[tk09] 1 11111111 尾数的23位不全为0: 表示不是数值
1 11111111 00000000000000000000000: 表示负无穷大.比最小负数还小的数都视为负无穷大.
1 11111110 11111111111111111111111: 表示最小的负数,即-2^128=-3.4*10^38
1 00000001 00000000000000000000000: 表示最大的负数,即-2^(-126)=-1.18*10^(-38)
0 00000000 00000000000000000000000: 表示0
0 00000001 00000000000000000000000: 表示最小的正数,即2^(-126)=1.18*10^(-38)
0 11111110 11111111111111111111111: 表示最大的正数,即2^(128)=3.4*10^(38)
0 11111111 00000000000000000000000: 表示正无穷大,比最大正数还大的数都视为正无穷大.
0 11111111 尾数的23位不全为0: 表示不是数值
棕上所述,float型数据的表示范围有以下五种(还有别的特殊的就不说了):
负无穷大; -3.4*10^38<x<-1.175*10^(-38); 0; 1.175*10^(-38)<x<3.4*10^38; 正无穷大.
当然,单精度数的输出只能保证6到7个有效数字,其余各位不准确,但在内存中的存放是准确的.
这是一种说法;
范围是-3.4*10^-38~3.4*10^38
此乃另一种说法!
权威指教哪个对?还是都不对?[tk09] 是-3.4×10-38~3.4×10^38。老谭的书上是这么说的 有人知道为什么吗?[tk09] 好帖别沉,继续顶……
我都为我自己的坚持而感动……
[em04] [em04] [em04] [em04] [em04] [em04] [em04] 不同的系统,取值情况会有所不同 都对!
自己做个程序判断一下就可以了!
不同的编译器会有差异的! 请楼上的两位解释原因,衷心感谢^.^[tk04] [tk04] [tk04] 因为单精度float 所占用的比特数32位 双精度占64位 长双精度占128位哈 我问的是取值范围的问题,楼上却答的是占用多少字节的问题,是否所问非所答了呢?[tk02]
页:
[1]
