Почему java7 выдает ошибку для сумм двойного
Я пробовал следующую программу
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
2 ответа
Числа с плавающей точкой (включая Java double
типа) не совсем точны. Посмотрите, как они кодируют информацию для более подробной информации. Вы можете видеть, что не все числа имеют точное представление IEEE 754 64 бит
Значения с плавающей точкой не имеют точной точности. Это их природа. Попробуйте использовать класс BigDecimal.