C语言FLOAT类型

摘录自CSDN论坛:点击打开链接

问题:

1)C语言规定了FLOAT类型,6~7位的有效数字,取值范围-3.4e-38至3.4e38。这个取值范围是从-0.00000000000000000000000000034至34000000000000000000000000000,那-1.0不在这个范围内,不能用float定义?

2)而且同为32位,float类型比long int类型(0~4294967295)的正值取值范围还大?
3)还有就是有关有效数字,C语言中的有效数字是如何定义的?是第一个不为0的数字开始计算,还是小数点后第一个不为零的数?
123456.789
0.123456789
123456789.0
这些有效数字都是如何计算的啊?


解答:

1)-0.00000000000000000000000000034至34000000000000000000000000000的范围包含了-1,因为在计算机里面负数是用补码表示的具体深入请自己看内存方面的章节

2)实型数据在内存中存在的时候是以指数形式储存的,一般前三个字节储存小数部分,后一个字节储存指数部分 

比如380在内在中的储存是小数部分:0.38,指数部分:3,即0.38*10^3(这个与科学计数法不同),前面的是小数,在转换为二进制数时有时会出现误差(具体自己看小数转二进制数部分,可能出现无限循环),所以实型数据的储存并不准确 

所以实型数据用一个字节来储存指数部分,只表示38位已经算是很小了,主要是位数多了,前面的小数部分不准确

3)有效数字是从第一个不为0的数开始



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值