Aleksey_f Новичок 17 Фев 2011 #1 Добрый день! Вопрос задам коротко, кто то может объяснить почему при выполнении этого кода ни чего не выводится? PHP: $num = 4; for ($i = 0.01; $i <= $num; $i += 0.01) { if ($i == 4) print 'ok'; }
Добрый день! Вопрос задам коротко, кто то может объяснить почему при выполнении этого кода ни чего не выводится? PHP: $num = 4; for ($i = 0.01; $i <= $num; $i += 0.01) { if ($i == 4) print 'ok'; }
Aleksey_f Новичок 17 Фев 2011 #3 craz написал(а): кототко ибо $i не может быть флоат if ($i/100 == 4) Нажмите для раскрытия... А почему не может быть? есть ссылка по этому поводу какая то?
craz написал(а): кототко ибо $i не может быть флоат if ($i/100 == 4) Нажмите для раскрытия... А почему не может быть? есть ссылка по этому поводу какая то?
korchasa LIMB infected 17 Фев 2011 #4 Aleksey_f Потому что нельзя сравнивать два float'а между собой "в лоб". В любом языке. Связанно это с формой представления чисел. Где почитать - хз. PHP: $num = 4; for ($i = 0.01; $i <= $num; $i += 0.01) { if (round($i,6) == 4) print 'ok'; }
Aleksey_f Потому что нельзя сравнивать два float'а между собой "в лоб". В любом языке. Связанно это с формой представления чисел. Где почитать - хз. PHP: $num = 4; for ($i = 0.01; $i <= $num; $i += 0.01) { if (round($i,6) == 4) print 'ok'; }
korchasa LIMB infected 17 Фев 2011 #6 tony2001 написал(а): http://php.net/float ? Нажмите для раскрытия... А где там про накопление ошибки? Все, нашел. На незаметном красном фоне
tony2001 написал(а): http://php.net/float ? Нажмите для раскрытия... А где там про накопление ошибки? Все, нашел. На незаметном красном фоне