Я вижу странное поведение в php, когда сравниваю double со строкой и надеялся, что кто-нибудь сможет объяснить мне, что происходит.
Если я объявлю $ num = 0.333;
а затем проверить
$ num == '0,333',
это выходит как правда. Если я затем добавлю 1 к $ num и затем вычту 1, то $ num == '0.333' получится как false. Если я затем приведу $ num в качестве строки, сравнение вернется к истине. Почему он это делает?
Вот пример:
<?php
$num = 0.333;
//returns 0.333 double Yes
echo $num, ' ', gettype($num), ' ', $num == '0.333' ? 'Yes' : 'No', '<br />';
$num += 1;
$num = $num - 1;
//returns 0.333 double No
echo $num, ' ', gettype($num), ' ', $num == '0.333' ? 'Yes' : 'No', '<br />';
$str = (string)$num;
//returns 0.333 string Yes
echo $str, ' ', gettype($str), ' ', $str == '0.333' ? 'Yes' : 'No', '<br />';
?>
Спасибо.