В книге, которую я сейчас читаю, есть этот отрывок:
Вы также можете использовать плавающую точку значение как счетчик циклов. Здесь пример цикла
forс таким типом счетчика:double a(0.3), b(2.5); for(double x = 0.0; x <= 2.0; x += 0.25) cout << "\n\tx = " << x << "\ta*x + b = " << a*x + b;Этот фрагмент кода вычисляет значение
a*x+bдля значенийxот0.0до2.0, с шагом0.25; однако вам необходимо позаботиться при использовании счетчика с плавающей запятой в петля. Многие десятичные значения не могут быть представленный точно в двоичном с плавающей точкой, поэтому расхождения может нарастать с совокупными значениями. Это означает, что вы не должны для цикла, чтобы конец цикла зависит от цикла с плавающей точкой счетчик достигает точной величины. Для Например, следующие плохо разработанные цикл никогда не заканчивается:for(double x = 0.0 ; x != 1.0 ; x += 0.2) cout << x;Целью этого цикла является выведите значение
x, поскольку оно изменяется от0.0до1.0; однако0.2не имеет точного представления как двоичное значение с плавающей запятой, поэтому значениеxникогда не будет точно1. Таким образом, второе управление контуром выражение всегда ложно, а цикл продолжается бесконечно.
Может кто-нибудь объяснить, как работает первый блок кода, а второй - нет?