Как можно сравнить два числа с плавающей точкой?

Мне необходимо произвести сравнения по типу

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 шт):

Автор решения: phpBear

Если Ваши переменные действительно по условиям задачи имеют точность не более двух знаков после запятой, то все прекрасно работает как говорится из коробки, по крайней мере на 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
→ Ссылка