C语言—为什么用实型变量定义一个实数,其数值会改变?

[复制链接]
查看11 | 回复5 | 2011-3-1 17:01:03 | 显示全部楼层 |阅读模式
因为在计算机中只有0和1,不能准确的表达出浮点数。在32为系统中,float是占用4个字节即32-bit,其中4字节中的最高位,用来指示浮点数的正负,当最高位是1时,为负数,最高位是0时,为正数。浮点数据就是按下表的格式存储在4个字节中:address+0
address+1
address+2
address+3contents
seee eeee
emmm mmmm
mmmm mmmm
mmmm mmmm
s: 表示浮点数正负,1为负数,0为正数e: 指数加上127后的值的二进制数m: 24-bit的底数(只存储23-bit)主意:这里有个特例,浮点数 为0时,指数和...
回复

使用道具 举报

千问 | 2011-3-1 17:01:03 | 显示全部楼层
因为float型小数点后要保留6位。。你只想要2位可以printf("%.2f",a);...
回复

使用道具 举报

千问 | 2011-3-1 17:01:03 | 显示全部楼层
float有效数字是6位,精确到123.449,之后就不是那么准确了再比如:a=1.35精确到1.35000,之后就不是那么准确了只要程序要求的精度不超过有效位数,就不影响计算...
回复

使用道具 举报

千问 | 2011-3-1 17:01:03 | 显示全部楼层
因为所有的数据都有他的有效数字 具体多少位我已经忘了 你自己看看就知道了...
回复

使用道具 举报

千问 | 2011-3-1 17:01:03 | 显示全部楼层
float 类型定义的小数点后为6位数、输出printf("%.2f",a);...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行