Странное добавление числовых строк в PHP
Я складываю две числовые строки $ a и $ b, а затем сравниваю результат с другой числовой строкой $ c. Все три числа хранятся в виде строк и преобразуются в числа с плавающей точкой PHP на этапе сравнения.
По какой-то причине тест $ a + $ b == $ c не оценивается как истинный, хотя и должен.
Вы можете воссоздать проблему с помощью этого скрипта:
<?php
$a = "-111.11";
$b = "-22.22";
$c = "-133.33";
echo '$a is '.$a."\n";
echo '$b is '.$b."\n";
echo '$c is '.$c."\n";
echo '$a + $b is '.($a+$b). "\n";
if ($a + $b == $c) {
echo 'a + b equals c'."\n";
} else {
echo 'a + b does not equal c'."\n";
}
?>
Странно, если я немного изменю значения так, чтобы $ a = -111.11, $ b = -22.23 и $ c = -133.34, это работало, как и ожидалось.
Я что-то упускаю очевидное, или это ошибка в PHP?