точность — предотвращение округления php небольших чисел

Может ли php обрабатывать очень маленькие числа, не округляя их? Например, при расчете exp(-99) + 1/2PHP вычислить это, чтобы быть 0.5, Это проблематично, если позже я захочу умножить данный результат, а не на чрезвычайно маленькое число, оно просто дает половину числа.

echo exp(-99) + 1/2 // Outputs 0.5

0

Решение

Вы находитесь вне диапазона, поддерживаемого числами с плавающей запятой.

На моей платформе (PHP-плавающие 64-битные) echo exp(-99); возвращается прямо 1.0112214926104E-43

Это потому, что экспоненциальная часть достаточно широко, чтобы представлять e^-99

Но, как я добавляю … echo exp(-99)+0.5; я получил 0.5

В результате вы ожидаете получить что-то с более чем 50 десятичными цифрами.

Двойные числа с плавающей запятой не имеют такой большой мантиссы (обычно предел составляет около 18-20 знаков после запятой).

Чтобы ответить на ваш вопрос, если вам действительно нужно сделать такую ​​математику (обрабатывать очень маленькие числа без их округления) вы могли бы использовать Математическое расширение произвольной точности PHP:

http://php.net/manual/en/book.bc.php

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]