c语言基础(初学) 看看这个程序,分析一下,为什么会出现这个结果,谢谢

[复制链接]
查看11 | 回复4 | 2011-10-25 00:32:34 | 显示全部楼层 |阅读模式
又是这样的问题,再解释一次计算机的浮点数存储依照IEEE754规范,它是这样规定的:浮点数由两部分组成:底数部分M+指数部分E: M*2E (M和E都是2进制的32位二进制是这样划分的:FEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 其中F是符号位和(和整数一样)E是指数位M是有效数字位(看起来是23位,实际上是24位,并且最高位始终为1)指数部分8位,由于指数可以为负数,所以IEEE754规则规定此处的值减去127为实际指数整数1的二进制是这样存储的00000000 00000000 00000000 00000001把这个数当浮点数看待,那就是: eeeeeee e...
回复

使用道具 举报

千问 | 2011-10-25 00:32:34 | 显示全部楼层
首先你要明白/的意思这是整除的意思 如果有int型数据 则会默认把小数点后的数四舍五入掉至于输出的格式不一样那是应为你的输出语句中有格式符比如%f浮点型 %d整数型 通过这些格式符 系统会自动转换输出变量的格式所以同一个变量输出的效果却不一样...
回复

使用道具 举报

千问 | 2011-10-25 00:32:34 | 显示全部楼层
因为你那个b= a/ 1000;
b 是Int所以b算出来是整形的!即b=0,所以以%d输出就是 0 以%f输出就是0.000000!而你输出a那一行输出与数是b,所以同上!...
回复

使用道具 举报

千问 | 2011-10-25 00:32:34 | 显示全部楼层
很简单,因为b是整形,一个浮点型的数字不能直接赋给整形!...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行