c语言浮点型运算错误

main(){
float c;
c=22.2;
while(c>1){c=c-1;}}

c到最后怎么等于0.1999998

给定的输入数据式样中间有逗号分隔吗:scanf("%d,%d",&p,&q);
如果是空格分隔就要改为:scanf("%d%d",&p,&q);这样才行
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-26
float的精度到6位的 所以第七位的就是不准确的了
这就会导致 最后的计算每次都有误差
建议用 double 型 精度能到10有效数字
第2个回答  2009-03-26
我又写了一遍程序结果不是你的那个,我做的程序结果是0.200001这个结果是正确的。程序如下:
#include "stdio.h"
void main()
{
float c;
c=22.2;
while(c>1)
{c=c-1;}
printf("%f",c);
}你再照着做一遍如果还不行的话,把float改成double再试试
第3个回答  2009-03-26
应该是c的赋值的时候有问题。
自动补齐后面的小数位
第4个回答  2009-03-26
浮点数运算本来就是很不精确的,建议用double,或者在浮点数后面补偿!
相似回答