[問題] 程式跑出來很奇怪,到底哪裡出問題?

看板java作者 (汪汪)時間15年前 (2008/10/28 19:17), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串1/1
我要使用float陣列,想要把兩個小數相成,EX:0.5*0.5=0.25 但跑出來的結果卻不是這樣。 我的程式碼如下: class Ex33{ public static void main(String[] _){ float [] a1=new float [5]; float [] a2=new float [5]; float [] a3=new float[5]; int i; for(i=1;i<a1.length+1;i++){ a1[i-1]=i/10.f; } for(i=0;i<a1.length;i++){ a2[i]=a1[i]+1; } for(i=0;i<a3.length;i++){ a3[i]=a1[i]*a2[i]; } for(i=0;i<a3.length;i++){ System.out.print(a3[i]+" "); } } } 我以為跑出來的結果應該是 0.11 0.24 0.39 0.56 0.75 但結果卻是0.11000001 0.24000001 0.39000002 0.56 0.75 請問為什麼會出現這麼多小數點 ? 而哪個部份出錯了? 感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.134.86

10/28 19:31, , 1F
常見的浮點數精確度問題...
10/28 19:31, 1F

10/28 19:49, , 2F
因為2進制表現不出0.11這個數字,只能逼近
10/28 19:49, 2F

10/28 22:41, , 3F
改用wrapper class?
10/28 22:41, 3F

10/29 17:05, , 4F
謝謝各位的回答。
10/29 17:05, 4F

10/30 02:14, , 5F
這是阿田出的題目嗎= =
10/30 02:14, 5F
文章代碼(AID): #191lIx5z (java)