По умолчанию в вычислениях в PHP скриптах в цифрах с плавающей запятой (проще говоря — в любых нецелых числах) показывается ровно 14 цифр. Причём независимо от того, сколько цифр идёт до точки — в полученном числе будет ровно 14 цифр. То есть если это большое число, то его точность (количество знаков после запятой) снижается. Поясню на примере. Следующий код:
<?php echo '60/7 = ' . 60/7;
выведет:
60/7 = 8.5714285714286
А следующий код:
echo '6000000/7 = ' . 6000000/7;
выведет:
6000000/7 = 857142.85714286
Можете посчитать — в обоих числах по 14 цифр.
Точность цифр с плавающей точкой настраивается директивой precision в файле php.ini. Она определяет количество значащих цифр, отображаемых для чисел с плавающей точкой. Как можно догадаться, её значение установлено на 14. Чтобы изменения вступили в силу, не забывайте перезапускать веб-сервер.
Вполне возможно, что вам нужно увеличить точность вычислений, для этого увеличьте значение precision.
К примеру, при настройке:
precision = 14
код
echo '60/7 = ' . 60/7;
выведет:
60/7 = 8.5714285714286
А при настройке:
precision = 24
тот же самый код выведет:
60/7 = 8.57142857142857117480617
Здесь всё довольно просто, но есть ещё один вариант: -1 означает, что будет использован усовершенствованный алгоритм для округления таких чисел.
Проверим, при настройке:
precision = -1
приведённый выше код выведет:
60/7 = 8.571428571428571
Связанные статьи:
- Что делать если PHP скрипту не хватает времени и памяти. Почему большой файл не загружается на сайт или в phpMyAdmin (100%)
- Почему не работают короткие теги в PHP (100%)
- Как и какие функции отключить в PHP (100%)
- Как установить веб-сервер Apache с PHP, MySQL и phpMyAdmin на Windows (100%)
- Для чего нужна и как использовать open_basedir (100%)
- Как исправить «Configuration File (php.ini) Path» no value (RANDOM - 75%)