Ошибка в логической операции

HraKK

Мудак
Команда форума
Ошибка в логической операции

почему условие
(0.1+0.1 == 0.2)
истинно в пхп??
 

HraKK

Мудак
Команда форума
а как ты думаешь почему
(0.1+0.2== 0.3)
не истинна?
 

ksnk

прохожий
master_x
bccomp - не панацея, ибо
echo bccomp(1.00000, 0.9999999999, 5); // == 1
 

HraKK

Мудак
Команда форума
Вообще то я не спашивал как их сравнить.

Я спрашивал теория - почему?

Спасибо, Кром
Как я понял просто в 1 случии ПХП преоброзовал правильно, а во втором нет.
Раз на раз не приходится
 

master_x

Pitavale XXI wieku
ksnk
либо я чего-то не догоняю, но вот вам вопрос: а чего кроме единицы вы хотели получить? левый операнд больше правого, вот и единица...
 

ksnk

прохожий
master_x
Я просто хотел показать, что bccomp НЕ ПОДХОДИТ для операции вещественного сравнения! Это функция - строковое сравнение изображений числе. Если в результате вывертов реализации результатом операции 0.1+0.2 окажется число 0.2999999999..., что, согласитесь, не так уж и невероятно - bcсomp сработает неправильно...
IMHO, конечно, проверять такое мне не приходилось :)
bccomp, в моем понимании, для того, чтобы он стал полезен - должен был бы округлить числа до указанной точности, что он не сделал...
 

Кром

Новичок
master_x, ksnk
Вы не понимаете в теме. Разберитесь сначала. А пока не надо лезть в тему.
 
Сверху