PHP FLOAT СРАВНЕНИЕ
В PHP, сравнение чисел типа float может быть неожиданным из-за проблем точности при вычислениях.
Эта проблема может возникать при использовании операторов сравнения, таких как ==, >, <, >=, <=. Например, при сравнении двух переменных типа float, содержащих числа с плавающей точкой, следующий код может не работать ожидаемым образом:
$a = 0.1 + 0.1 + 0.1;$b = 0.3;if ($a == $b) { echo "Equal";} else { echo "Not equal";}
Ожидаемый вывод: "Equal". Фактический вывод: "Not equal". Это происходит из-за того, что точность представления чисел с плавающей точкой ограничена и сравнение таких чисел может быть неточным.
Решить эту проблему можно с помощью функции round
, которая округляет число с плавающей точкой до заданного количества знаков после запятой:
$a = round(0.1 + 0.1 + 0.1, 2);$b = round(0.3, 2);if ($a == $b) { echo "Equal";} else { echo "Not equal";}
Теперь ожидаемый вывод: "Equal".
PHP - методы
Float или Decimal: что лучше для работы с дробными числами?
Операторы сравнения и логические операторы в PHP. Курс php обучение с нуля. Урок 6.
6# Всё про тип данных float в PHP - Курс по PHP 8
Лекция 4: Числа с плавающей запятой
ОБУЧАЮЩИЙ МАРАФОН T7 - ДЕНЬ 2 (14.06.23) - Юридический разбор. Пруфы за 7 месяцев сотрудничества.
Свойство float Сравнение с display inline block Часть 1 Трепачёв Дмитрий
Батл \
Числа с плавающей точкой в MySQL: тип данных FLOAT и DOUBLE в MySQL
Какой framework выбрать? Рассуждение о php фреймворках и Laravel