[問題] 浮點數陣列與比較大小

看板C_and_CPP作者 (宅砲廢物大學生)時間16年前 (2009/11/09 01:27), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
使用的是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)

11/09 01:30, , 1F
浮點數本來就不是個精確的東西 你可以在printf指定格式
11/09 01:30, 1F

11/09 01:30, , 2F
精準度問題?
11/09 01:30, 2F

11/09 01:32, , 3F
問題不大 不過 有點麻煩... 要另外記一組 string解吧...
11/09 01:32, 3F

11/09 01:33, , 4F
float只有七位精準而已 多這3已經是在float的精確度之外了
11/09 01:33, 4F

11/09 01:34, , 5F
你可以試試 double 它是約16位精準 一般輸出下應該好很多
11/09 01:34, 5F
文章代碼(AID): #1Azlzc7x (C_and_CPP)