@romaaa32

Неправильно работает округление, это баг?

Это баг или я что-то не понимаю?

$result = 1.65/0.55;
echo $result; //  "3.0"
echo floor($result); //  "2.0"
echo floor(3.0); // "3.0"


Как 3 округляется до 2 и как с этим бороться?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
echo number_format(1.65/0.55, 30);
//или лучше так
 debug_zval_dump(1.65/0.55);

https://ru.wikipedia.org/wiki/IEEE_754-2008

https://www.php.net/manual/en/book.bc.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
floor() - округление "отбрасывает дробную часть" при положительном аргументе, и округляет в меньшую сторону при отрицательном. То есть [ floor(-1.65/0.55) = -3 ], а [ floor(1.65/0.55) = 2 ]
round() - округляет по математическим правилам
ceil() - округляет в большую сторону
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
06 мая 2024, в 10:17
15000 руб./за проект
06 мая 2024, в 10:02
3000 руб./за проект