@Bayda

PHP: Почемгу round некорректно округляет до двух знаков?

PHP Version 5.3.3-7+squeeze19

echo round( 8.798768979, 2 );
Результат: 8.800000000000001

echo round( 8.449999999999999, 2 );
Результат: 8.449999999999999

Почему не происходит округление до двух знаков ?
  • Вопрос задан
  • 741 просмотр
Решения вопроса 1
Inkognitoss
@Inkognitoss
Full-stack разработчик.
Попробуйте ini_set("precision", 12); перед выполнением или в php.ini прописать. Но нужно быть аккуратным, чтобы нигде ничего в приложении вашем больше не отломалось. А лучше обновить php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MadridianFox
Web-программист, многостаночник
Округляет он правильно. Числа хранит "неправильно". Это связано с тем, как float хранится в памяти. Во многих языках программирования есть такая проблема, что якобы ровное число, будучи float становится больше или меньше целого на один бит.
Как этого избежать не знаю. Когда сам с этим столкнулся, сделал костыль в виде конвертирования числа в строку, почему-то некоторые строковые функции умеют обходить эту проблему.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект