Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

информационных технологий» 5 глава




Пример условно определяемой функции:

if($OS_TYPE=="win")

{ // Функция-заглушка

function MyChOwn($fname,$attr)

{ // ничего не делает

return 1;

}

}

else

{ // Передаем вызов настоящей chown()

function MyChOwn($fname,$attr)

{ return chown($fname,$attr);

}

}

Если работаем под Windows, функция MyChOwn() ничего не делает и возвращает 1 как индикатор успеха, в то время как для Unix она просто вызывает оригинальную chown().

7.4 Передача функций по ссылке и возврат функцией ссылки

Передача функций «по ссылке». Как таковая, передача функции по ссылке в PHP не поддерживается. Однако, т. к. это слишком часто может быть полезным, в PHP есть понятие «функциональной переменной». Пример:

function A($i) { echo "a $i\n"; }

function B($i) { echo "b $i\n"; }

function C($i) { echo "c $i\n"; }

$F="A"; // или $F="B" или $F="C"

$F(10); // вызов функции, имя которой хранится в $F

В PHP есть такая стандартная функция – uasort(), которая сортирует ассоциативный массив, заданный ее первым параметром, причем критерием сравнения для элементов этого массива служит функция, имя которой передано вторым параметром. Пример:

// Сравнение без учета регистра символов строк

function FCmp($a,$b)

{ return strcmp(tolower($a),tolower($b))

}

$a=array("b"=>"bbb", "a"=>"Aaa", "d"=>"ddd);

uasort($a,"FCmp"); // Сортировка без учета регистра символов

Здесь функция, имя которой получено со вторым параметром uasort(), должна иметь два аргумента, которые являются сравниваемыми значениями в массиве. В общем случае, функциональная переменная – это всего лишь переменная-строка, содержащая имя функции. Поскольку в PHP нет такого понятия, как области видимости для функций (есть только области видимости для локальных переменных), то конфликтов это не порождает – одному имени может соответствовать не более одной функции. Такой подход не очень хорош, но он действительно работает.

Возврат функцией ссылки. До сих пор рассматривались функции, которые возвращают определенные значения – а именно, копии величин, использованных в инструкции return (это были именно копии, а не сами объекты). Пример:

$a=100;

function R()

{ global $a; // объявляет $a глобальной

return $a; // возвращает значение, а не ссылку!

}

$b=R();

$b=0; // присваивает $b, а не $a!

echo $a; // выводит 100

Пусть необходимо, чтобы функция R() возвращала не величину, а ссылку на переменную $a, чтобы в дальнейшем с этой ссылкой можно было работать точно так же, как и с $a. Использование оператора $b=&R() не подходит, т. к. при этом мы получим в $b ссылку не на $a, а на ее копию. Если задействовать return &$a, то появится сообщение о синтаксической ошибке (PHP воспринимает & только в правой части оператора присваивания сразу после знака =).

Специальный синтаксис описания функции, возвращающей ссылку:

$a=100;

function &R() // & — возвращает ссылку

{ global $a; // объявляет $a глобальной

return $a; // возвращает значение, а не ссылку!

}

$b=&R(); // не забудьте &!!!

$b=0; // присваивает переменной $a!

echo $a; // выводит 0. Это значит, что теперь $b — синоним $a

Нужно поставить & в двух местах: перед определением имени функции, а также в правой части оператора присваивания при вызове функции. Использовать амперсанд в инструкции return не нужно.

 


Тема 8 Строковые функции

 

8.1 Функции работы со строками

8.2 Работа с блоками текста

 

8.1 Функции работы со строками

Строки в PHP – одни из самых универсальных объектов. Любой объект можно упаковать в строку. Строка может содержать любые символы с кодами от 0 до 255 включительно. Нет специального маркера «конца строки», длина строки во внутреннем представлении PHP хранится отдельно. Для формирования и вставки непечатаемого символа в строку используется функция chr(). Из-за слабого контроля типов в PHP строка может содержать число, причем с ней можно работать, как с числом: прибавлять другие числа, умножать и т. д. При этом все преобразования (в десятичной системе) производятся автоматически. Существуют функции, преобразующие число, записанное в различных системах счисления в обычное представление, и наоборот.

Конкатенация строк. Конкатенация – это присоединение к одной строке другой. Оператор + следует применять только для сложения чисел. Для конкатенации строк используется специальный оператор «.» (точка). Оператор «.» всегда воспринимает свои операнды как строки и возвращает строку. В случае, если один из операндов не может быть переведен в строковое представление, т. е. если это массив или объект, то он воспринимается как строки array и object соответственно. Это правило применимо и не только при сцеплении строк, но и при передаче такого операнда в какую-нибудь стандартную функцию, которой требуется строка. Пример:

$a=array(10,20,30);

echo $a // Неожиданный результат «array»!

Есть и другой, более специализированный, способ конкатенации строк. Он обычно используется, когда значения строковых или числовых переменных перемежаются с обычными словами. Если, к примеру, в $day хранится текущее число, в $month – название месяца и в $year – год, то вывести строку вида «Сегодня 8 мая 2000 года» можно так:

echo "Сегодня $day $month $year года";

При этом в строку, вырабатываемую инструкцией echo, автоматически в нужных местах вставятся значения переменных.

Сравнение строк и инструкции if-else. Рассмотрим одно тонкое место в интерпретаторе PHP, касающееся немного неправильной работы со строками. Заключается оно в следующем: если используются операторы сравнения == и!= (или любые другие, которые могут потребовать перевода строки в число) с операндами-строками, то результат, не всегда оказывается верным. Примеры:

$one=1 // число один

$zero=0 // присваиваем число ноль

if($one=="") echo 1 // очевидно, не равно – не выводит 1

if($zero=="") echo 3 // Вопреки ожиданиям печатает 3!

if(""==$zero) echo 4 // И это тоже не поможет!..

if("$zero"=="") echo 5

// Не работает в некоторых версиях PHP 3

if(strval($zero)=="") echo 6;

// Теперь правильно – не выводит 6

if($zero==="") echo 7

// Самый лучший способ, но не действует в PHP 3

В операциях сравнения пустая строка "" прежде всего трактуется как 0 (ноль) и уж затем – как «пусто»! Операнды сравниваются как строки только в том случае, если они оба – строки, в противном случае идет числовое сравнение. При этом пустая строка воспринимается как 0, как и любая другая, которую интерпретатору не уда лось перевести в число.

При сравнении двух переменных-строк, нужно быть абсолютно уверенными, что их типы именно строковые, а не числовые. Это не распространяется на оператор === (оператор эквивалентности). Его использование заставляет интерпретатор всегда сравнивать величины и по значению, и по их типу. С точки зрения PHP 0=="", но 0!==="". Нужно всегда использовать === вместо strval()!

Существует одна стандартная ошибка, которая состоит в использовании функция strpos($str,$what), которая возвращает позицию подстроки $what в строке $str или false, если подстрока не найдена. Пусть нужно проверить, встречается ли в строке $str подстрока <? (и напечатать «это PHP-программа», если встречается). Вариант

if(strpos($str,"<?")!=false)

echo "это PHP-программа";

не годится, если <? находится в самом начале строки (в этом случае не будет выдано сообщение, хотя подстрока в найдена, и функция возвратила 0, а не false). Вместо проверки на неравенство, нужно проверять на неэквивалентность:

if(strpos($str,"<?")!===false)

echo "это PHP-программа";

Оператор!=== используется с константой false, а не с пустой строкой "". Для оператора false!==="", в то время как, false=="".

Функции для работы с одиночными символами:

· string chr(int $code)

Возвращает строку из одного символа с кодом $code. Эта функция используется для вставки непечатаемых символов в строку – например, кода нуля или символа прогона страницы, а также при работе с бинарными файлами.

· int ord(char $ch)

Функция возвращает код символа $ch.

· int strrpos(string $where, char $what)

Функция ищет в строке $where последнюю позицию, в которой встречается символ $what (если $what – строка из нескольких символов, то выявляется только первый из них, остальные не играют никакой роли!). В случае, если искомый символ не найден, возвращается false

Функции отрезания пробелов:

· string trim(string $st)

Функция возвращает копию $st, только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами здесь и далее подразумеваются: пробел " ", символ перевода строки \n, символ возврата каретки \r и символ табуляции \t. Например, вызов trim(" test\n ") вернет строку "test".

· string ltrim(string $st)

Аналогична функции trim(), только удаляет исключительно ведущие пробелы, а концевые не трогает.

· string chop(string $st)

Удаляет только концевые пробелы, ведущие не трогает.

Базовые функции:

· int strlen(string $st)

Возвращает длину строки $st.

· int strpos(string $where, string $what, int $fromwhere=0)

Пытается найти в строке $where подстроку (то есть последовательность символов) $what и в случае успеха возвращает позицию (индекс) этой подстроки в строке. Первый символ строки имеет индекс 0. Необязательный параметр $fromwhere можно задавать, если поиск нужно вести не с начала строки $from, а с какой-то другой позиции. В этом случае следует эту позицию передать в $fromwhere. Если подстроку найти не удалось, функция возвращает false. Проверяя результат вызова strpos() на false нужно использовать только оператор ===.

· string substr(string $str, int $from [,int $length])

Функция возвращает участок строки $str, начиная с позиции $start и длиной $length. Если $length не задана, то подразумевается подстрока от $start до конца строки $str. Если $start больше, чем длина строки, или же значение $length равно нулю, то возвращается пустая подстрока. Если передать в $start отрицательное число, то будет считаться, что это число является индексом подстроки, но только отсчитываемым от конца $str (например, -1 означает «начиная с последнего символа строки»). Параметр $length, если он задан, тоже может быть отрицательным. В этом случае последним символом возвращенной подстроки будет символ из $str с индексом $length, определяемым от конца строки.

· int strcmp(string $str1, string $str2)

Сравнивает две строки посимвольно (точнее, побайтово) и возвращает: 0, если строки полностью совпадают; -1, если строка $str1 лексикографически меньше $str2; и 1, если, наоборот, $str1 «больше» $str2. Так как сравнение идет побайтово, то регистр символов влияет на результаты сравнений.

· int strcasecmp(string $str1, string $str2)

Аналогична strcmp(), только при работе не учитывается регистр букв. С точки зрения этой функции "ab" и "AB" равны.

8.2 Работа с блоками текста

· string str_replace(string $from, string $to, string $str)

Заменяет в строке $str все вхождения подстроки $from (с учетом регистра) на $to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется. Пример замены всех символов перевода строки на их HTML- эквивалент – тэг <br>:

$st=str_replace("\n","<br>\n",$st)

То, что в строке <br>\n тоже есть символ перевода строки, никак не влияет на работу функции, т. е. функция производит лишь однократный проход по строке.

· string nl2br(string $string)

Заменяет в строке все символы новой строки \n на <br>\n и возвращает результат. Исходная строка не изменяется. Символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте.

· string WordWrap(string $st, int $width=75, string $break="\n")

Функция разбивает блок текста $st на несколько строк, завершаемых символами $break, так, чтобы на одной строке было не более $width букв. Разбиение происходит по границе слова, так что текст остается читаемым. Возвращается получившаяся строка с символами перевода строки, заданными в $break. Пример форматирования текста по ширине поля 60 символов, предварив каждую строку префиксом ">":

function Cite($OurText, $prefix="> ")

{ $st=WordWrap($OurText, 60-strlen($prefix), "\n");

$st=$prefix.str_replace("\n","\n$prefix",$st);

return $st;

}

· string strip_tags (string $str [, string $allowable_tags])

Функция удаляет из строки все тэги и возвращает результат. В параметре $allowable_tags можно передать тэги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу. Пример:

$st="

<b>Жирный текст</b>

<tt>Моноширинный текст</tt>

<a href=http://www.dklab.ru>Ссылка</a>";

echo "Исходный текст: $st";

echo "<hr>После удаления тэгов: ".strip_tags($st,"<a><b>")."<hr>";

Тэги <a> и <b> не были удалены (ровно как и их парные закрывающие), в то время как <tt> исчез.

· string str_repeat(string $st, string $number)

Функция «повторяет» строку $st $number раз и возвращает объединенный результат. Пример:

echo str_repeat("test!",3); // выводит test!test!test!

Функции для преобразований символов:

· string strtr(string $str, string $from, string $to)

Функция в строке $str заменяет все символы, встречающиеся в $from, на их «парные» (то есть расположенные в тех же позициях, что и во $from) из $to.

· string UrlEncode(string $st)

Функция URL-кодирует строку $st и возвращает результат. Эту функцию удобно применять, если нужно динамически сформировать ссылку <a href=...> на какой-то сценарий, но не уверены, что его параметры содержат только алфавитно-цифровые символы. Пример:

echo "<a

href=/script.php?param=".UrlEncode($UserData);

Если переменная $UserData включает символы =, & или даже пробелы, все равно сценарию будут переданы корректные данные.

· string UrlDecode(string $st)

Производит URL-декодирование строки. Используется редко, т.к. PHP и так умеет перекодировать входные данные автоматически.

· string RawUrlEncode(string $st)

Почти полностью аналогична UrlEncode(), но только пробелы не преобразуются в +, как это делается при передаче данных из формы, а воспринимаются как обычные неалфавитно-цифровые символы.

· string RawUrlDecode(string $st)

Аналогична UrlDecode(), но не воспринимает + как пробел.

· string HtmlSpecialChars(string $str)

Заменяет в строке символы: &, <, >, кавычки на их HTML-эквиваленты, так, чтобы они выглядели на странице «самими собой». Пример применения этой функции – формирование параметра value в элементах формы, чтобы не было проблем с кавычками, или вывод сообщения в гостевой книге, если вставлять тэги пользователю запрещено. Пусть содержимое книги хранится в массиве $Book. Пример печати содержимого гостевой книги, чтобы тэги не воспринимались браузером как описания форматирования:

<?foreach($Book as $k=>$v) {?>

Имя: <?=$v['name']?><br>

Текст: <?=HtmlSpecialChars($v['text'])?> <hr>

<?}?>

· string StripSlashes(string $st)

Заменяет в строке $st некоторые предваренные слэшем символы на их однокодовые эквиваленты. Это относится к символам: ", ', \.

· string AddSlashes(string $st)

Вставляет слэши только перед символами: ', " и \.

Функции изменения регистра:

· string strtolower(string $str)

Преобразует строку в нижний регистр.

· string strtoupper(string $str)

Переводит строку в верхний регистр.

Функции форматных преобразований. Переменные в строках PHP интерполируются, поэтому практически всегда задача «смешивания» текста со значениями переменных не является проблемой:

echo "Привет, $name! Вам $age лет.";

Язык PHP поддерживает ряд функций, использующих такой же синтаксис, как и их Си-эквиваленты.

· string sprintf(string $format [, mixed args,...])

Функция возвращает строку, составленную на основе строки форматирования, содержащей некоторые специальные символы, которые будут впоследствии заменены на значения соответствующих переменных из списка аргументов. Строка форматирования $format может включать в себя команды форматирования, предваренные символом %. Все остальные символы копируются в выходную строку как есть. Каждый спецификатор формата (то есть, символ % и следующие за ним ко-

манды) соответствует одному параметру, указанному после параметра $format. Если нужно поместить в текст % как обычный символ, необходимо его удвоить:

echo sprintf("Значение %d%%",$d);

Каждый спецификатор формата включает максимум пять элементов (в порядке их следования после символа %):

· Необязательный спецификатор размера поля, который указывает, сколько символов будет отведено под выводимую величину. В качестве символов-заполнителей (если значение имеет меньший размер, чем размер поля для его вывода) может использоваться пробел или 0, по умолчанию подставляется пробел. Можно задать любой другой символ-наполнитель, если указать его в строке форматирования, предварив апострофом '.

· Опциональный спецификатор выравнивания, определяющий, будет результат выровнен по правому или по левому краю поля. По умолчанию производится выравнивание по правому краю, однако можно указать и левое выравнивание, задав символ - (минус).

· Необязательное число, определяющее размер поля для вывода величины. Если результат не будет в поле помещаться, то он «вылезет» за края этого поля, но не будет усечен.

· Необязательное число, предваренное точкой ".", предписывающее, сколько знаков после запятой будет в результирующей строке. Этот спецификатор учитывается только в том случае, если происходит вывод числа с плавающей точкой, в противном случае он игнорируется.

· Обязательный спецификатор типа величины, которая будет помещена в выходную строку: b – очередной аргумент из списка выводится как двоичное целое число; c – выводится символ с указанным в аргументе кодом; d – целое число; f – число с плавающей точкой; o – восьмеричное целое число; s – строка символов; x – шестнадцатеричное целое число с маленькими буквами a–z; X – шестнадцатеричное число с большими буквами A–Z.

Примеры:

$money1 = 68.75;

$money2 = 54.35;

$money = $money1 + $money2;

// echo $money выведет "123.1"...

$formatted = sprintf ("%01.2f", $money);

// echo $formatted выведет "123.10"!

// вывода целого числа, предваренного нужным количеством нулей:

$isodate=sprintf("%04d-%02d-%02d", $year, $month, $day);

· void printf(string $format [, mixed args,...])

Делает то же, что и sprintf(), только результирующая строка не возвращается, а направляется в браузер пользователя.

· string number_format(float $number,

int $decimals, string $dec_point=".",

string $thousands_sep=",");

Функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно быть у числа в выходной строке. Параметр $dec_point представляет собой разделитель целой и дробной частей, а параметр $thousands_sep – разделитель триад в числе (если указать на его месте пустую строку, то триады не отделяются друг от друга).

В PHP существует еще несколько функций для выполнения форматных преобразований, среди них – sscanf() и fscanf(), которые часто применяются в Си.

Работа с бинарными данными. Строки могут содержать любые, в том числе и бинарные, данные (то есть, символы с кодами, меньшими 32). Для работы с такими строками иногда удобно использовать функции pack() и unpack().

· string pack(string $format [,mixed $args,...])

Функция pack() упаковывает заданные аргументы в бинарную строку. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования – наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a, A, h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находятся в очередном параметре-строке при вызове функции (то есть, определяется размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные. Список спецификаторов формата: a – строка, свободные места в поле заполняются символом с кодом 0; A – строка, свободные места заполняются пробелами; h – шестнадцатеричная строка, младшие разряды в начале; H – шестнадцатеричная строка, старшие разряды в начале; c – знаковый байт (символ); C – беззнаковый байт; s – знаковое короткое целое (16 бит); S – беззнаковое короткое целое; n – беззнаковое целое (16 битов, старшие разряды в конце); v – беззнаковое целое (16 битов, младшие разряды в конце); i – знаковое целое; I – беззнаковое целое; l – знаковое длинное целое; L – беззнаковое длинное целое; N – беззнаковое длинное целое; V – беззнаковое целое (32 бита, младшие разряды в конце); f – число с плавающей точкой; d – число с плавающей точкой двойной точности; x – символ с нулевым кодом; X – возврат назад на 1 байт; @ –заполнение нулевым кодом до заданной абсолютной позиции.

Пример:

// Целое, целое, все остальное – символы

$bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);

В строке $bindata будет содержаться 6 байтов в такой последовательности: 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатеричной системе счисления).

· array unpack(string $format, string $data)

Функция распаковывает строку $data, пользуясь информацией о формате $format. Возвращает она ассоциативный массив, содержащий элементы распакованных данных. В строке $format после каждого спецификатора (или после завершающего его числа) должно «впритык» следовать имя ключа в ассоциативном массиве. Разделяются параметры при помощи символа /. Пример:

$array=unpack("c2chars/nint", $bindata);

В результирующий массив будут записаны элементы с ключами: chars1, chars2 и int. Если после спецификатора задано число, то к имени ключа будут добавлены номера 1, 2 и т. д., т. е. в массиве появятся несколько ключей, отличающихся суффиксами.

Хэш-функции

· string md5(string $st)

Возвращает хэш-код строки $st, основанный на алгоритме корпорации RSA Data Security под названием «MD5 Message-Digest Algorithm». Хэш-код – это строка, практически уникальная для каждой из строк $st. То есть вероятность того, что две разные строки, переданные в $st, дадут нам одинаковый хэш-код, стремится к нулю. Если длина строки $st может достигать нескольких тысяч символов, то ее MD5-код занимает максимум 32 символа.

Хэш-код и алгоритм MD5 используется для проверки паролей на истинность. Пусть, например, есть система со многими пользователями, каждый из которых имеет свой пароль. Можно хранить все пароли в обычном виде, или зашифровать их каким-нибудь способом, но тогда велика вероятность того, что этот файл с паролями украдут. Если пароли были зашифрованы, то, зная метод шифрования, не составит особого труда их раскодировать. Однако можно поступить другим способом, при использовании которого даже если файл с паролями украдут, расшифровать его будет математически невозможно. Сделаем так: в файле паролей будем хранить не сами пароли, а их (MD5) хэш-коды. При попытке какого-либо пользователя войти в систему мы вычислим хэш-код только что введенного им пароля и сравним его с тем, который записан у нас в базе данных. Если коды совпадут, значит, все в порядке, а если нет – что ж, извините... При вычислении хэш-кода какая-то часть информации о строке $st безвозвратно теряется. И именно это позволяет не опасаться, что файл паролей можно расшифровать. Ведь в нем нет самих паролей, нет даже их каких-то связных частей!

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

· int crc32(string $str)

Функция вычисляет 32-битную контрольную сумму строки $str. То есть, результат ее работы – 32-битное (4-байтовое) целое число. Эта функция работает гораздо быстрее md5(), но в то же время выдает гораздо менее надежные «хэш-коды» для строки. Алгоритм crc32 имеет неизмеримо большую предсказуемость, чем MD5.

· string crypt(string $str [,string $salt])

Алгоритм шифрования DES до недавнего времени был стандартным для всех версий Unix и использовался для кодирования паролей пользователей (тем же самым способом, о котором мы говорили при рассмотрении функции md5()). Но в последнее время MD5 постепенно начал его вытеснять. Хэш-код для одной и той же строки, но с различными значениями $salt (это должна быть обязательно двухсимвольная строка) дает разные результаты. Если параметр $salt пропущен, PHP сгенерирует его случайным образом:

$st="This is the test";

echo crypt($st)."<br>";

// можем получить, например, 7N8JKLKbBWEhg

echo crypt($st)."<br>";

// а здесь появится, например, Jsk746pawBOA2

Два одинаковых вызова crypt() без второго параметра выдают совершенно разные хэш-коды.

Сброс буфера вывода

· void flush()

Функция отправляет содержимое буфера echo в браузер пользователя. Обычно при использовании echo данные не прямо сразу отправляются клиенту, а накапливаются в специальном буфере, чтобы потом транспортироваться большой «пачкой». Так получается быстрее. Однако, иногда бывает нужно досрочно отправить все данные из буфера пользователю, например, если что-то выводится в реальном времени.


Тема 9 Математические функции

 

9.1 Встроенные константы

9.2 Встроенные функции

 

9.1 Встроенные константы

В PHP представлен полный набор математических функций. Встроенные констнты приведены в таблице 9.1.

Таблица 9.1 – Встроенные константы

Константа Значение Пояснение
M_PI 3,14159265358979323846 Число p
M_E 2,7182818284590452354 e
M_LOG2E 1,4426950408889634074 log 2(e)
M_LOG10E 0,43429448190325182765 lg (e)
M_LN2 0,69314718055994530942 ln (2)
M_LN10 2,30258509299404568402 ln (10)
M_PI_2 1,57079632679489661923 p/2
M_PI_4 0,78539816339744830962 p/4
M_1_PI 0,31830988618379067154 1/p
M_2_PI 0,63661977236758134308 2/p
M_SQRTPI 1,77245385090551602729
M_2_SQRTPI 1,12837916709551257390 2/
M_SQRT2 1,41421356237309504880
M_SQRT3 1,73205080756887729352
M_SQRT1_2 0,70710678118654752440 1/
M_LNPI 1,14472988584940017414 ln (p)
M_EULER 0,57721566490153286061 Постоянная Эйлера

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...