ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Математические функции. Часть Пятая.


05-02-2015

13.3. Функции обработки чисел произвольной точности
Двойные вещественные числа обычно дают существенно более точное значение для числового анализа, чем это бывает необходимо для вычислений. Но PHP может предложить способ, позволяющий обрабатывать числа с более высокой точностью. При этом для хранения сверхдлинных чисел с плавающей точкой используются строки. Все они используют значение масштаба, которое представляет собой количество цифр, расположенных справа от десятичной точки. Аргумент scale, задаваемый во всех этих функциях, является необязательным, и в случае его указания отменяется стандартное значение масштаба. Функция bcscale, описанная в главе 15, "Настройка", позволяет задавать значение масштаба по умолчанию.
Эти функции являются частью расширения bcmath и двоичного дистрибутива ОС Windows, но не активизируются по умолчанию при инсталляции в других операционных системах. Если PHP сообщает, что эти функции не распознаны, PHP потребуется перекомпилировать с заданием параметра -enable-bcmath.
PHP также поддерживает расширение для GNU MP, известное как GMP. На время на­писания данной книги это расширение поддерживало только целочисленное представление. Подробнее о GMP можно узнать на Web-узле <http://www.swox.com/gmp/>.
Функции, работающие с числами произвольной точности, показаны в листинге 13.32.
string bcadd(string left, string right, integer scale)
Функция bcadd прибавляет значение, заданное аргументом left, к значению, заданному аргументом right. integer bccomp(string left, string right, integer scale)
Функция bccomp сравнивает значение, заданное аргументом left, со значением, заданным аргументом right. Если они равны, возвращается нуль. Если значение left меньше right, возвращается -1. Если значение left больше right, возвращается значение 1.
string bcdiv(string left, string right, integer scale)
Функция bcdiv делит значение, заданное аргументом left, на значение, заданное аргументом right.
string bcmod(string left, string right)
Функция bcmod определяет модуль от деления значения, заданного аргументом left, на значение, заданное аргументом right.
string bcmul(string left, string right, integer scale)
Функция bcmul умножает значение, заданное аргументом left, на значение, заданное аргументом right.

Листинг 13.32. Функции обработки чисел произвольной точности

<?php
//11.1111111000
print(bcadd("1.234567890", "9.87654321", 10) . '<br>'); //1, т.е. первый больше второго
print(bccomp("12345","1.111111111111", 10) . '<br>'); //0.1250075946
print(bcdiv("12345", "98754", 10) . '<br>'); //121134
print(bcmod("66394593", "133347") . '<br>');
//8853519792771
print(bcmul("66394593", "133347", 10) . '<br>'); //292683432083423203645857 print(bcpow("66394593", "3", 10) . '<br>'); //35.1364056215
print(bcsqrt("1234.567", 10) . '<br>'); //1146
print(bcsub("1234.4842", "88.6674") . '<br>');
?>

string bcpow(string value, string exponent, integer scale)
Функция bcpow возводит значение, заданное аргументом value, в степень значения, заданного аргументом exponent. Если значение аргумента exponent не является целым, то отсекается дробная часть полученного числа.
string bcpowmod(string value, string exponent, string mod, integer scale)
Функция bcpowmod возвращает значение числа, возведенного в степень exponent, минус модуль этого числа. 
string bcsqrt(string value, integer scale)
Функция bcsqrt возвращает квадратный корень из значения, заданного аргументом value.
string bcsub(string left, string right, integer scale)
Функция bcsub вычитает значение, заданное аргументом right, из значения, заданного аргументом left.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Математические функции. Часть Четвёртая. PHP. Функции даты и времени