作者lobowwow (汪汪)
看板java
標題[問題] 程式跑出來很奇怪,到底哪裡出問題?
時間Tue Oct 28 19:17:14 2008
我要使用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