Пример кода:
$q=1;
do {
echo "Значение q достигло $q <br>";
$q = $q - 0.1;
}
while ($q != 0)
На выходе имею такое: (опачке!!!)
_Значение q достигло 1
Значение q достигло 0.9
Значение q достигло 0.8
Значение q достигло 0.7
Значение q достигло 0.6
Значение q достигло 0.5
Значение q достигло 0.4
Значение q достигло 0.3
Значение q достигло 0.2
Значение q достигло 0.1
Значение q достигло 1.38777878078E-16
Значение q достигло -0.1
Значение q достигло -0.2
Значение q достигло -0.3
Значение q достигло -0.4
=========
Что нового в HTML 5? статьи и обзоры.
могу посоветовать "!=" заменить на">" )))
А про 1.38777878078E-16 хзхзхзхз с 2004 в багтреке пхп висид вроде
учим матчасть. php оперирует не десятичной системой, а двоичной, поэтому такие кажусы возможны, как и во многих других языках, для более точного расчёта нужно использовать bc*.
Вообще для многих языков пишут, что "не рекомендуется для float чисел использовать логические сравнения, основанные на равенстве (типа ==, !=)", как раз из-за таких вот косяков.
да, вот последнее утверждение – тру.
Ради эксперимента замените шаг цикла на 0.125 или 0.25
какое тогда решение? приводить число типа float в int? или можно по другому сравнивать?
Фигня какая-то. А нафига это?
Помоему правда лучше написать while ($q > 0)
А иначе он походу циклица.
ну "он" в обоих случаях "циклица". человек решил пойти через do-while. и я не думаю, что это было не оправдано…что тебе не нравится?
Ну не знаю. Я бы просто добавил while ($q > 0) для достоверности. Просто странно, что нужны ВСЕ значения кроме нуля. Так получается.
$q=1;
do {
echo "Значение q достигло $q <br>";
$q = $q – 0.1;
}
while ($q > 0.1);
$q = 0;
echo "Значение q достигло $q <br>";
токо так тогда да ?* ))))))