鱼C论坛

 找回密码
 立即注册
查看: 5819|回复: 3

新手C语言,有关float型的有效值

[复制链接]
发表于 2013-8-11 05:01:03 | 显示全部楼层 |阅读模式
4鱼币
我想问下,float型的输出结果,是不是可以这样理解:
1.  因为float型有效数字为6位,这所谓的从输出结果是不是从左边第一个不为零的数开始数呢?

2. 因为 flao型默认的处理方法是:实数中的整数部分全部输出,小数部分输出6位。

所以虽然是6位小数,可能由于输出的整数位的增多而小数位的精度就是自己降低呢?

精确的小数会不会出现5位,4位,3位,2位 ,1位,或者是0位呢

打个比方:
float  3.333333                      是不是精确到红3的位置,是不是红3以后的小数有可能就不精确了?

float  12.345678                    是不是精确到红6的位置 ,是不是红6以后的小数可能就不精确了?

float  3456.123456                是不是精确到红2的位置 ,是不是红2以后的小数可能就不精确了?

float  234567.333333             是不是精确到红7的位置 ,是不是红7以后的小数可能就不精确了?

3. 精确度不够该换用double型,但是C语言中进行浮点数运算时,将float型数据都自动转换为double型,然后进行计算。
那上面的我打的比方,在程序编译是会不会由于自己转换成double型后,有效数字自动变为15位呢?
float  345.123456     是不是原来float型是精确到红3位置,如果编译自动转换double型后,红3后面的456是不是也变成精确了的呢?
float  234567.333333    是否由精确到红7变为double型后整个数都是精确了的呢?
还是其他的情况呢?
谢谢   ( 自己看的   可能想得偏差比较大  )




最佳答案

查看完整内容

loat的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) (浮点)数值 = 尾数 × 底数 ^ 指数,(附加正负号) float的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。 float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证 ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-11 05:01:04 | 显示全部楼层
本帖最后由 牡丹花下死做鬼 于 2013-8-11 08:53 编辑

loat的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位)
8bits(指数位)
23bits(尾数位)
(浮点)数值 =      尾数    ×    底数 ^ 指数,(附加正负号)
float的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
其中float的存储方式如下图所示: 20120219100849549.png
8.25,用二进制的科学计数法表示为:1.0001*23

按照上面的存储方式,符号位为:0,表示为正,指数位为:3+127=130 ,位数部分为,故8.25的存储方式如下图所示:

20120219100849549.png

上面这一堆是网上找的说实话我也没看懂希望有大牛解释(应为我看甲乙也会先应用网上的正规解释哈)说下我的理解

20120219100849549.png 不难看出你说的是对的 我的理解是 float是占4个字节 但无论是整数部分还是小数部分都是要占据空间的而他的总空间是不变的所以整数部分位数增加小数部分所能保证的精度也就减小

觉得好的话给最佳啊~

应为我也是新手所以说错了望请见谅

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-11 14:10:14 | 显示全部楼层
学习了啊啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-11 14:46:19 | 显示全部楼层
看是基本看懂了,其实只要符合我本来的思路就可以了。
其实,就是想验证一下,毕竟自己学怕想错了。
不是不给佳,想看看还能有没有更简单明了的答案。
谢谢,回答的朋友
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表