Почему у меня возникают разные результаты при печати z, как показано в следующем фрагменте кода?
Кажется, что компилятор разрезает вторую «печать» всех позиций после «2» ... Спасибо за помощь!Номера Java и плавающей запятой
double z = 1.0;
z = z + 0.1;
z = z + 0.1;
System.out.print("z := "+z);
System.out.print(" # z:= "+((0.1+0.1)+(1.0)));
Выход:
z := 1.2000000000000002 # z:= 1.2
На самом деле, это не тот же самый код. Вы должны сравнить с 1.0 + 0.1 + 0.1. – ericbn
Прочитайте [Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой] (http://download.oracle.com/docs/cd/E19422-01/819-3693/ncg_goldberg.html) – ericbn