作者khungd2 (宅炮废物大学生)
看板C_and_CPP
标题[问题] 浮点数阵列与比较大小
时间Mon Nov 9 01:27:00 2009
使用的是Dev C
题目要使用者输入浮点数或整数
假如输入值为0或负数则结束
然後显示最大的数
Enter a number :60
Enter a number :38.3
Enter a number :4.89
Enter a number :100.62
Enter a number :75.2295
Enter a number : 0
The largest number entered was 100.62
-----------------
以下是我的CODE
#include <stdio.h>
int main()
{
float array[100]; //array 用来储存所输入的数字 最多可输入101个
float temp;
int i=0,j=0;
while(1) //使用者输入 判断所输入值=0 或 为负数时则停止
{
scanf("%f",&array[i]);
if(array[i]==0||array[i]<0)
break;
i++;
}
temp=array[0]; //令temp为array[0]
for(j=0;j<i;j++) // 比大小 如果temp比阵列的下一个数字大 则 temp换
{
if(temp<array[j])
temp=array[j];
}
printf("%f",temp);
system("PAUSE");
return 0;
}
--------------------------
我的问题是
当我照题目输入测资
我显示的会是100.620003
输入其他的浮点数有的也是 会在後面多出个或少了0.0000x之类的
想请问问题是在哪里呢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.131.145
※ 编辑: khungd2 来自: 218.168.131.145 (11/09 01:27)
1F:→ james732:浮点数本来就不是个精确的东西 你可以在printf指定格式 11/09 01:30
2F:→ softwind:精准度问题? 11/09 01:30
3F:→ softwind:问题不大 不过 有点麻烦... 要另外记一组 string解吧... 11/09 01:32
4F:推 LPH66:float只有七位精准而已 多这3已经是在float的精确度之外了 11/09 01:33
5F:→ LPH66:你可以试试 double 它是约16位精准 一般输出下应该好很多 11/09 01:34