Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

Глава 22. Математические функции и функции произвольной точности (ВС) в PHP

Очень часто при написании кода программисту приходится сталкиваться с осуществлением каких-либо математических операций. Именно простые математические операции позволяют решать сложные задачи.

Язык программирования можно было бы считать не совсем полным в случае отсутствия возможности работы с математическими функциями. Принцип работы математических функций в РНР такой:

• функции работают только с диапазоном чисел типа long и double;

• в случае использования больших чисел следует обратиться к математическим функциями произвольной точности;

• приведенные ниже ВС-функции задействованы только при условии, что РНР был скомпилирован в режиме — enable-bornath, т. е. при включенных в конфигурацию функциях bcmath.

В этой главе рассмотрены следующие вопросы:

• математические константы ифункции;

• функции произвольной точности (ВС-функции).

22.1. Математические константы и функции

M_PI

Математическая константа, равная 3,14159265358979323846 (значение числа пи).

Abs

Возвращает абсолютную величину числа. Если число с плавающей запятой, то возвращает число с плавающей запятой.

Синтаксис:

mixed abs(mixed number);

Acos

Возвращает арккосинус аргумента в радианах. Синтаксис:

float acos (float arg);

Asin

Возвращает арксинус аргумента в радианах. Синтаксис:

float asin (float arg);

Atan

Возвращает арктангенс аргумента в радианах. Синтаксис:

float atan (float arg);

Atan 2

Вычисляет арктангенс от двух переменныххиу аналогично вычислению арктангенс y/х, за исключением того, что знаки обоих аргументов используются для определения сектора результата.

Функция возвращает результат в радианах, находящихся между —PI и PI (включительно).

Синтаксис:

float atan2 (float у, float х);

Base_convert

Возвращает строку, содержащую number, представленную по основанию tobase. Основание, в котором дается число which number, указывается в frombase. Основания frombase и tobase должны находиться в диапазоне от 2 до 36 включительно. Цифры в числах с основанием выше, чем 10, будут представлены буквами a—z со значениями а — 10, b — 11 и z — 36. Например:

$binary = base_convert($hexadecimal, 16, 2);

Синтаксис:

string base_convert(string number, int frombase, int tobase);

BinDec

десятичный эквивалент двоичного числа, представленного аргументом binary_string.

BinDec конвертирует двоичное число в десятичное. Наибольшее число, которое может быть конвертировано — 31 битам, или 2 147 483 647 в десятичном виде.

Синтаксис:

int bindec(string binary_string);

Ceil

Округляет дробную часть к большему. Синтаксис

int ceil(float number);

Возвращает следующее наибольшее целое значение number. Ceil() непродуктивно использовать для целых чисел.


СОВЕТ

Функция ceil() в PHP/FI 2 возвращала число типа float. Используйте $new = (double)ceil($number);, чтобы имитировать старое поведение функции.


Cos

Возвращает косинус аргумента в радианах.

Синтаксис:

float cos (float arg);

DecBin

Возвращает строку, содержащую двоичное представление аргумента number. Наибольшее число, которое может быть конвертировано — 2 147 483 647 в десятичном виде или 31 бит.

Синтаксис:

string decbin(int number);

DecHex

Возвращает строку, содержащую шестнадцатеричное представление number. Наибольшее число, которое может бьпъ конвертировано, равно 2 147 483 647 в десятичном виде, или 7fffffff в шестнадцатеричном.

Синтаксис:

string dechex(int number);

DecOct

Возвращает строку, содержащую восьмеричное представление аргумента number. Наибольшее число, которое может быть конвертировано, равно 2 147 483 647 в десятичном виде, или 777 777 777 в восьмеричном.

Синтаксис: string

Exp

Возвращает число e, возведенное в степень arg.

Синтаксис:

float exp (float arg);

Floor

Округляет дробную часть к меньшему. Синтаксис:

int floor(float number);

Возвращает предыдущее целое значение после number. Использование floor() нецелесообразно для целых чисел.


СОВЕТ

Функция floor() в PHP/FI 2 возвращала число типа float. Используйте $new = (double)floor($number);, чтобы имитировать старое поведение этой функции.


Getrandmax

Возвращает максимальную случайную величину, которая может быть возвращена вызовом функции rand().

Синтаксис:

int getrandmax(void);

HexDec

десятичный эквивалент числа, представленного аргументом HexDec конвертирует шестнадцатеричную строку в десятичное число. Наибольшее число, которое может быть конвертировано, равно 7fffffff вшестнадцатеричном виде, или 2 147 483 647 в десятичном.

Синтаксис:

int hexdec(string hex_string);

Log

Возвращает натуральный логарифм от аргумента arg. Синтаксис:

float log (float arg);

Log10

Возвращает логарифм по основанию от аргумента arg. Синтаксис:

float log10(float arg);

Max

Возвращает наибольшее число из перечисленных в параметрах. Синтаксис:

mixed max(mixed argl, mixed arg2, mixed argn);

Если первый элемент является массивом, max() возвращает максимальную величину массива. Если первый параметр — integer, string или double, то следует использовать как минимум два параметра, ив этом случае max() возвращает наибольшую из этих величин. Можно сравнивать неограниченное количество значений.

Если одна или более величин типа double, все остальные величины будут обращены к double и, соответственно, возвратится число типа double. Если ни одно из чисел не является double, то все будут обращены в целые и возвратится целое число.

Min

Возвращает наименьшее значение из указанных в аргументах. Синтаксис:

mixed min (mixed arg1, mixed arg2, mixed argn);

Если первый параметр — массив, min() возвратит наименьшую величину массива. Если первый параметр — целое integer, string или double, следует указать не меньше двух параметров и min() возвратит наименьшую из них величину. Можно сравнивать неограниченно количество величин.

Если одна или более величин типа double, все остальные величины будут обращены к double и, соответственно, возвратится число типа double. Если ни одно из чисел не является double, то все будут обращены в целые и возвратится целое число.

Mt_rand

Генерирует наилучшее случайное число.

Синтаксис:

int mt_rand( [ int min], [int max] );

Множество генераторов случайных чисел, написанных на старой библиотеке libcs, имеют неясные или неизвестные характеристики и к тому же медленны. По умолчанию с функцией rand() РНР использует генератор случайных чисел, написанный на libc. Функция mt_rand() является его полной заменой. Она использует генератор случайных чисел с известными характеристиками (Mersenne Twister), который производит случайные числа, пригодные для использования в криптографии, и работаете четыре раза быстрее, чем средняя скорость, которую обеспечивает libc. Домашняя страница Mersenne Twister находится по адресу

Если функция вызывается без необязательных аргументов min и max, mt_rand() возвращает псевдослучайное число между 0 и RAND_MAX. Если нужно, например, получить случайное число между 5 и 15 (включительно), то можно использовать следующий вызов функции: mt_rand(5,15).

Не забудьте инициализировать генератор случайных чисел перед использованием функции mt_srand().

Mt_strand

Инициализирует генератор случайных чисел значением seed Синтаксис:

void mt_srand(int seed);

Например:

/* инициализируется количеством микросекунд с последней "целой" секунды */

mt_srand( (double)microtime () 1000000);

$randval = mt_rand();

Mt_getrandmax

Возвращает максимальную случайную величину, которая может быть возвращена вызовом функции mt_rand().

Синтаксис:

int mt_getrandmax(void);

Number_format

Форматируетчисло со сгруппированными разрядами (например, 1 000 000). Синтаксис:

string number_format (float number, int decimals, string dec_point, string thousands_sep);

number_format() возвращает форматированную версию числа number. Эта функция принимает один, два или четыре параметра (не три).

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

Если дано два параметра, число number will будет отформатировано с десятичным знаком decimals с точкой впереди и запятой между каждой группой разрядов.

Если даны все четыре параметра, то число number будет отформатировано с десятичным знаком decimals, dec_point вместо точки перед десятичным знаком и t housands_sep вместо запятой между каждой группой разрядов.

OctDec

Синтаксис:

int octdec(string octal_string);

Во чвращаетдесятичный эквивалент восьмеричного числа, представленного аргументом octal_string. Максимальное число, которое может быть конвертировано, равно 17 777 777 777, или 2 147 483 647 в десятичном виде.

Pi

Возвращает аппроксимированное значение числа пи. Синтаксис:

double pi(void);

Pow

Возвращает base, возведенное в степень ехр. Синтаксис:

float pow (float base, float ехр);

Rand

Генерирует случайную величину. Синтаксис:

int rand([int min], [int max]);

Если функция вызывается без необязательных параметров min и max, rand() возвращает псевдослучайную величину между 0 и RAND_MAX. При желании получить случайное число между 5 и 15 (включительно) используйте rand (5,15).

Не забудьте инициализировать генератор случайных чисел перед использованием srand(). Начиная с версии РНР 4.2.0 в вызове этой функции нет необходимости.

Round

Округляет число с плавающей запятой. Синтаксис:

double round(double val);

Например:

$foo = round( 3.4 ); // $foo = 3.0

$foo = round( 3.5 ); // $foo = 4.0

$foo = round( 3.6 ); // $foo = 4.0

Sin

Возвращает синус аргумента. Синтаксис:

float sin (float arg);

Sqrt

Возвращает квадратный корень аргумента. Синтаксис:

float sqrt (float arg);

Srand

Инициализирует генератор случайных чисел. Синтаксис:

void srand(int seed);

Например:

// инициализируется числом микросекунд с последней "целой" секунды

srand((double)microtime()*1000000);

$randval = rand();

Начиная с версии PHP 4.2.0 в вызове этой функции нет необходимости.

Tan

Возвращает тангенс аргумента. Синтаксис:

float tan(float arg);

<< Предыдущий параграф Следующий параграф >>
Оглавление