作者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
1F:推 LPH66:常见的浮点数精确度问题... 10/28 19:31
2F:推 izsoak:因为2进制表现不出0.11这个数字,只能逼近 10/28 19:49
3F:推 marktb:改用wrapper class? 10/28 22:41
4F:→ lobowwow:谢谢各位的回答。 10/29 17:05
5F:推 yangqiwei:这是阿田出的题目吗= = 10/30 02:14