$x = array(
"0",
"1689.60",
"0.00",
"-200",
"432.00",
"33.60"
);
$v = 0;
foreach($x as $p) {
$v += $p;
}
if($v == 1955.2) {
echo 'equal';
}
с этим простым скриптом Я предположил, что он выведет «равный», но это не так.Ошибка сравнения значений с плавающей запятой
Если я изменил значение -200 на -100 и изменил ожидаемое значение результата на значение 2055.2, он будет работать нормально. Я уже решил свою проблему, набрав $ v в строке, но я просто хочу узнать, почему это не сработало, если это числовое (целое или плавающее).
Вы случайно выбрали значение v как целое число после того, как вы суммировали числа для проверки ошибок? Не могли бы вы рассказать мне, какой результат был, если бы вы это сделали? – lmcphers
Да, значение v равно 1955.2, а при var_dump тип float. значение и тип те же, но возвращают false в условном выражении. попробовал его на версии 5.3 и 5.5 php. – user1035079
Используя ваш пример, попробуйте это, если проверите и скажите мне, соответствует ли он эхо « ' if ($ v - 1955.2 <= 0.001) {echo 'equal'; } ' – lmcphers