Как можно сравнить два числа с плавающей точкой?
Мне необходимо произвести сравнения по типу
if ($a + $b < $c) { /*true*/ } else { /*false*/ }
но так как все три переменных представляют собой числа с плавающей точкой с двумя знаками после запятой, сравнение делаю так:
if ($a + $b - $c < -0.001) { /*true*/ } else { /*false*/ }
Правильно делаю? Видел пример проверки на равенство тут: https://www.php.net/manual/ru/language.types.float.php, но примеров для проверки меньше/больше не нашёл.
Ответы (1 шт):
Если Ваши переменные действительно по условиям задачи имеют точность не более двух знаков после запятой, то все прекрасно работает как говорится из коробки, по крайней мере на php v7.4.10. Так что думаю, что делать сравнение как в Вашем варианте - излишне.
<?php
$a = 0.11;
$b = 0.12;
$c = 0.24;
echo '$a = '.$a."\n";
echo '$b = '.$b."\n";
echo '$c = '.$c."\n";
echo '1) $a + $b < $c = ';
if ( $a + $b < $c ) {
echo "true\n";
} else { echo "false\n"; }
echo '2) $a + $b < $c = ';
if ( floatval($a) + floatval($b) < floatval($c) ) {
echo "true\n";
} else { echo "false\n"; }
Результат
$a = 0.11
$b = 0.12
$c = 0.24
1) $a + $b < $c = true
2) $a + $b < $c = true