2016-08-11 7 views
0

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

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

Php Безразлично» t эхо "1/2". Показывать реальный код и вывод (a [mcve]), который подчеркивает проблему. –

+0

@JonathonReinhart в моем PHP echo возвращает '0.5'. @ Joshhh читал о плавающих числах - у них есть что-то вроде ** ТОЧНОСТЬ **. Читайте об этом. И помните - номер плавания только в вашей голове. 0,5 $ это 50 центов. Может быть, вы должны изменить свою идею? – ventaquil

ответ

0

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

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

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

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

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

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

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

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

Смежные вопросы