我尝试了以下程序
class test{
public static void main (String argv[]){
double x = 0.1;
double y = 0;
for (int i =0;i<10 ; i++){
y=y+x;
System.out.println (y);
}
}
}
但它提供以下输出
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
为什么java7会给出这个而不仅仅是0.3或0.8 ...!
我也尝试了在线java编译器中的以下内容 http://ideone.com/g0bYad
答案 0 :(得分:1)
浮点数(包括Java的double
类型)并不完全准确。有关详细信息,请参阅how they encode information。您可以看到并非所有数字都具有精确的IEEE 754 64位表示
答案 1 :(得分:0)
浮点值缺乏精确的精度。这是他们的本性。尝试使用BigDecimal类。