fish7fish7 发表于 2008-8-2 12:21

请教float的取值范围!

请解释原因,谢谢!

mark0289 发表于 2008-8-2 13:03

这个在书上能查到吧,而且介绍很详细
谭浩强的C语言上应该有的

fish7fish7 发表于 2008-8-2 13:33

楼上的太有才了![tk04] 你既然知道为何不COPY一下呢?[tk04]

fish7fish7 发表于 2008-8-2 18:22

没人回答,继续问,不懂就问,啊咋咋地……[tk05]

fish7fish7 发表于 2008-8-2 18:58

坚持不懈,继续问,诺大的一个论坛,真的没人才了吗?[tk07]

fish7fish7 发表于 2008-8-2 19:03

仍旧问![tk09]

woshicl 发表于 2008-8-2 19:08

百度搜

fish7fish7 发表于 2008-8-2 19:17

搜不到,搜到的大多是错解,求权威回答……[tk09]

fish7fish7 发表于 2008-8-2 19:23

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]

云中之侠影 发表于 2008-8-3 08:27

是-3.4×10-38~3.4×10^38。老谭的书上是这么说的

fish7fish7 发表于 2008-8-3 11:15

有人知道为什么吗?[tk09]

fish7fish7 发表于 2008-8-3 16:59

好帖别沉,继续顶……
我都为我自己的坚持而感动……
[em04] [em04] [em04] [em04] [em04] [em04] [em04]

妍清舞 发表于 2008-8-3 19:38

不同的系统,取值情况会有所不同

hangeng 发表于 2008-8-3 19:41

都对!

自己做个程序判断一下就可以了!
不同的编译器会有差异的!

fish7fish7 发表于 2008-8-3 20:58

请楼上的两位解释原因,衷心感谢^.^[tk04] [tk04] [tk04]

我是稀饭 发表于 2008-8-3 23:14

因为单精度float 所占用的比特数32位 双精度占64位 长双精度占128位哈

fish7fish7 发表于 2008-8-4 17:57

我问的是取值范围的问题,楼上却答的是占用多少字节的问题,是否所问非所答了呢?[tk02]

页: [1]

编程论坛