看板 java 關於我們 聯絡資訊
我要使用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
LPH66:常見的浮點數精確度問題... 10/28 19:31
izsoak:因為2進制表現不出0.11這個數字,只能逼近 10/28 19:49
marktb:改用wrapper class? 10/28 22:41
lobowwow:謝謝各位的回答。 10/29 17:05
yangqiwei:這是阿田出的題目嗎= = 10/30 02:14