Лекция
Game: Perform tasks and rest cool.6 people play!
Play gameПривет, Вы узнаете о том , что такое ма тические функции в php, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое ма тические функции в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
В этом уроке я познакомлю читателей с математическими функциями, которые имеются в PHP. Точнее, в примерах использоваться будут лишь самые частые из них, так как полный список проще всего найти на официальном сайте, вместе с подробными описаниями.
Цель данного урока - скорее не представить полный список этих функций, а привести некоторые примеры их использования.
Математические функции предназначены для работы переменными численных типов. Это значит, что операндами будут являться переменные типа int и float.
Я разделю эти функции на несколько типов:
0. Общие функции
1. Тригонометрические функции
2. Обратные тригонометрические функции
3. Логарифмические функции
4. Степенные функции
5. Функции преобразования оснований исчисления
6. Остальные (которые трудно классифицировать)
Общие функции
Game: Perform tasks and rest cool.6 people play!
Play gameGame: Perform tasks and rest cool.6 people play!
Play game<?PHP
$test = max('строка', array(0, 1), 4, 7);
//вернется array(0, 1) - массив всегда будет считаться больше остального, хотя такое "сравнение" выглядит довольно глупо
?>
Я не могу представить, зачем такое может потребоваться, но тем не менее, в PHP это работает именно так.
Полностью аналогичная функция min, ее можно даже не описывать. Разница в том, что возвращается минимум.
round
Cинтаксис:
float round ( float val [, int precision] )
Округляет вещественное число по арифметическим правилам. Можно указать точность округления. В этом случае будет вестись округление до указанного числа знаков дроби. Эту точность можно указать равной 0 (равносильно вызову функции без указания точности). Кроме этого, можно указать и отрицательное значение точности. Результат аналогичен.
rand
Cинтаксис:
int rand ( [int min, int max] )
Возвращает случайное целое число в диапазоне от min до max включительно. Эти параметры не обязательны. Если их не указывать, вернется случайное число в диапазоне от 0 до константы RAND_MAX.
На операционных системах семейства Windows значение RAND_MAX всего лишь 32767
Если нужно случайное дробное число, то можно воспользоваться, например, таким кодом:
<?PHP
//Генерируем случайное вещественное число в диапазоне $a..$b в предположении $a<$b
$iMaxRand=30000;//по сути, можно задавать и больше для большей точности
$iRand=rand(1, $iMaxRand);
$fRand=$a+($b-$a)*$iRand/$iMaxRand;
?>
sqrt
Cинтаксис:
float sqrt (float arg)
Функция вычисляет квадратный корень аргумента. И аргумент и результат - вещественные.
Тригонометрические и обратные тригонометрические функции
Game: Perform tasks and rest cool.6 people play!
Play gameGame: Perform tasks and rest cool.6 people play!
Play gameЛогарифмические функции
К логарифмическим функциям я отнес функции:
log10
log1p
log
Эти функции также не требуют отдельного описания. Отдельно скажу лишь о функции log1p. Дело в том, что, в силу особенности самого логарифма, при значениях аргумента, близкого к 1, он сильно стремится к нулю. Это может быть помехой для "тонких" вычислениях. Эта функция вычисляет значение более точным способом.
Кроме прочего, приведу пример полезной функции, которая вычисляет логарифм по произвольному основанию:
<?PHP
function Log($base, $arg)
{
if($base==1||$base<=0)
{
return null;
}
if($arg<=0)
{
return null;
}
return log($arg)/log($base);
}
?>
Да, кстати, вопрос для читателей - я назвал функцию Log - не вызовет ли это конфликта с именем уже существующей функции log?
Степенные функции
Game: Perform tasks and rest cool.6 people play!
Play gameНеклассифицированные функции
В заключение приведу ряд полезных, не классифицированных мною отдельно, функций:
is_finite
is_infinite
is_nan
is_finite
Cинтаксис:
bool is_finite (float val)
Эта функция определяет, конечно ли число с точки зрения диапазона чисел с плавающей точкой. Этот диапазон берется исходя из текущей платформы.
is_finite
Cинтаксис:
bool is_infinite (float val)
Эта функция определяет, бесконечно ли число с точки зрения диапазона чисел с плавающей точкой. При этом, конечно, учитываются возможности платформы, но, скажем, результат log(0) не будет таковым ни на какой платформе (можете подумать, почему)
is_nan
Cинтаксис:
bool is_nan (float val)
Показывает, является ли аргумент действительным числом. С точки зрения алгебры, в категорию не вещественных чисел попадут как не-числа совсем (вроде арккосинуса от двойки), так и комплексные числа (вроде квадратного корня из -1). В обоих случаях функция вернет false.
Game: Perform tasks and rest cool.6 people play!
Play gameВ конце урока, как обычно, приведу ряд вопросов.
1. Что вернет функция is_nan, если переданный ей аргумент - трансцендентное число с точки зрения алгебры?
2. Пусть у нас обозначаются 1-9 обычный цифры, a-z цифры от 10 до 35, и A-Z цифры от 36 до 62. Напишите функцию, которая бы конвертировала число из одной системы счисления в другую (как base_convert), но с учетом таких обозначений (то есть аргумент принимает значение от 2 до 62)
3. В чем разница между is_nan и is_finite? Приведите примеры, когда их значения от одного и того же аргумента различны.
2. Некоторые примеры:
is_nan(sqrt(-1)) и is_finite(sqrt(-1))
is_nan(acos(2)) и is_finite(acos(2))
В заключение, эта статья об ма тические функции в php подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое ма тические функции в php и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)