Может ли php обрабатывать очень маленькие числа, не округляя их? Например, при расчете exp(-99) + 1/2
PHP вычислить это, чтобы быть 0.5
, Это проблематично, если позже я захочу умножить данный результат, а не на чрезвычайно маленькое число, оно просто дает половину числа.
echo exp(-99) + 1/2 // Outputs 0.5
Вы находитесь вне диапазона, поддерживаемого числами с плавающей запятой.
На моей платформе (PHP-плавающие 64-битные) echo exp(-99);
возвращается прямо 1.0112214926104E-43
Это потому, что экспоненциальная часть достаточно широко, чтобы представлять e^-99
Но, как я добавляю … echo exp(-99)+0.5;
я получил 0.5
В результате вы ожидаете получить что-то с более чем 50 десятичными цифрами.
Двойные числа с плавающей запятой не имеют такой большой мантиссы (обычно предел составляет около 18-20 знаков после запятой).
Чтобы ответить на ваш вопрос, если вам действительно нужно сделать такую математику (обрабатывать очень маленькие числа без их округления) вы могли бы использовать Математическое расширение произвольной точности PHP:
Других решений пока нет …