关于语言的程序问题

[复制链接]
查看11 | 回复2 | 2011-4-14 09:37:59 | 显示全部楼层 |阅读模式
#include \"stdio.h\"
int main()
{
float a,b,c;
scanf(\"%f%f\",
c=a b;
printf(\"%f\",c);
return 0;
}
为何用这个程序算9.9 9.9时得到的结果是19.799999
回复

使用道具 举报

千问 | 2011-4-14 09:37:59 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">浮点型和整型不一样的地方之一,就是浮点型不是精确类型,里面保存的数据都是有一定有效数字位数限制的。
即使是程序运算的时候,我们一般也要尽可能的考虑到保护他们存储数据的有效位数不会丢失。
实际上在楼主的例子里,19.799999已经是“正确的”结果了。
当显示的结果和理论上正确的结果的差距在允许的很少的区间之内,都可以看作是正确的。
这也是为什么我们在C/C开发的时候,判断一个浮点型是不是等于某一个常数,
不能直接或者不建议直接用==的原因。

















<h4 class=\"ask\">追问





<pre class=\"replyask-text\" id=\"content-3332350\">能说简单点吗..
回复

使用道具 举报

千问 | 2011-4-14 09:37:59 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-3332462\">嗯,就是说浮点型不会精确的保存和显示。
你看到的19.799999其实是正确的,只要是在有效数字允许的范围内正确,这个结果就是正确的。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行