Четверг, 16.05.2024, 16:33
DigitalBox
Приветствую Вас Гость | RSS
Главная Работа с числами Регистрация Вход
Меню сайта

Работа с числами



Типы данных float и integer являются числовыми. Инициализацию переменных этих типов можно осуществить таким образом:

$intvar =3;
$floatvar =9.3;

При этом интерпретатор РНР автоматически разместит заданные значения в оперативной памяти с учетом их типа.


Выполнение математических операций

Язык РНР позволяет выполнять над числовыми переменными различные операции. При этом необходимо задать два операнда и соответствующий символ математической операции. Например, операцию сложения (+) можно выполнить следующим образом: 1+2

То же самое можно осуществить и с переменными: $var1+$var2

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

$var1 = "1" ;
$var2 = 2;
$total = $varl + $var2;

Формально переменные $var1 и $var2 просуммировать нельзя, поскольку в $var1 содержится текстовая строка. Однако при обработке этого выражения интерпретатор РНР автоматически преобразует строку "1" в числовое значение 1 и корректно выполнит эту операцию.

В следующем фрагменте также выполняется автоматическое преобразование текстовой строки в число, однако конечный результат уже не так очевиден:

$var1 = "х";
$var2 = 2;
$total = $varl + $var2;

Поскольку РНР не может преобразовать символ "х" в числовое значение, то при выполнении сложения вместо него используется значение 0. Таким образом, результат сложения переменных $varl и $var2 будет равен 2. Преобразование типов далеко не всегда приводит к получению желаемых результатов. Безусловно, автоматическое приведение типов является очень удобным и позволяет сэкономить массу усилий. Однако нужно соблюдать осторожность, поскольку оно может привести к получению непредвиденных результатов, как показано в предыдущем примере.

Иногда интерпретатору РНР не удается корректно обработать выражения, которые понятны человеку. Например:

$var1 = "2,000";
$var2 = 2;
$total = $varl + $var2;

Хотя человеку и понятно назначение запятой в значении первой переменной, интерпретатору РНР — нет. Он преобразует строку "2,000" в числовое значение 2, и в результате после выполнения сложения в переменной $total будет содержаться значение 4.

В таблице ниже приведены основные математические операции языка РНР.

Операция
Описание
+
Сложение двух чисел
-
Вычитание второго числа из первого
*
Умножение двух чисел
/
Деление первого числа на второе
%
Остаток от деления (или деление по модулю). Например, в результате вычисления выражения $а = 13%4 в переменной $а будет содержаться значение 1


Порядок выполнения операций

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

$total=1+2*3+1;

Порядок выполнения операций очень важен, поскольку от этого зависит конечный результат. В языке РНР сначала выполняются операции умножения и деления и лишь потом сложение и вычитание. При равном приоритете операций действия выполняются слева направо. Так, в приведенном выше примере значение переменной $total становится равным 8.

$total = 1+2*3+1    #сначала выполняется умножение
$total = 1+6+1       #затем - левая операция сложения
$total = 7+1           #затем - сложение справа
$total = 8

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

$total = (1+2)*3+1;

После выполнения всех математических преобразований в переменной $total будет содержаться значение 10:

$total = (1+2)*3+1    #сначала выполняется сложение в скобках
$total = 3*3+1          #затем умножение
$result = 9+1            #и наконец сложение
$result = 10

Порядок вычислений в скобках соответствует общим правилам выполнения арифметических операций. Например, в выражении (3+2*5) сначала выполняется умножение, а затем — сложение. Естественно, внутри скобок можно использовать другие скобки и таким образом изменять последовательность выполнения операций.

Лучше руководствоваться поговоркой "Семь раз отмерь — один раз отрежь" и использовать скобки во всех случаях, когда арифметическое выражение выглядит неоднозначным.


Инкрементирование и декрементирование

Увеличить значение переменной на 1 можно следующим образом:

$counter = $counter + 1;

Однако для этого можно воспользоваться и сокращенной конструкцией языка РНР:

$counter++;

Например, рассмотрим выражения:

$counter=0;
$counter++;
echo $counter;

В результате в переменной $counter будет содержаться значение 1 (что и будет выведено на экран). Точно так же можно выполнить и вычитание:

$counter--;

Для увеличения значения переменной на 1 можно воспользоваться еще одним выражением: "+=1". С помощью такой конструкции значение переменной можно изменить произвольным образом. Например:

$counter+=2;
$counter-=3;
$counter*=2;
$counter/=3;

В приведенных примерах выполняется увеличение значения переменной $counter на 2, его уменьшение на 3, умножение на 2 и деление на 3 соответственно.


Использование встроенных математических функций

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

$rootvar = sqrt(91);
$rootvar = sqrt($number);

В первом выражении вычисляется квадратный корень числа 91, а во втором — значения, содержащегося в переменной $number.

Для округления действительного числа к ближайшему большему целому можно воспользоваться функцией:

$upnumber = ceil(27.63);

Результатом этого выражения будет 28. Существует аналогичная функция, которая округляет действительное значение к ближайшему меньшему целому. Например:

$downnumber = floor(27.63);

В этом случае функция floor() вернет значение 27.

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


Форматирование чисел для вывода

Зачастую числа необходимо отображать в каком-то определенном формате, например использовать запятую для разделения тысяч или использовать два знака после запятой для обозначения денежной суммы. Однако при использовании РНР числа хранятся и отображаются в наиболее эффективном формате. Так, если в переменной содержится число 10.00, он будет выведено как 10. Если же нужно вывести это число в другом виде, придется явно указать соответствующий формат.

Для определения формата в РНР предназначена функция number_format () с синтаксисом:

number_format(число, количество_десятичных_знаков,  "разделитель1", "разделитель2") и со следующими параметрами:

  • число. Форматируемое число, которое является обязательным аргументом.
  • количество_десятичных_знаков. Определяет количество знаков после запятой. Если этот параметр отсутствует, то по умолчанию его значение равно 0 и, таким образом, число округляется до ближайшего целого числа (т.е. отображается без дробной части). Если используются аргументы разделитель1 и разделитель2, то количество_десятичных_знаков является обязательным параметром.
  • разделитель1. Определяет символ, который будет использоваться в качестве символа-разделителя целой и дробной частей. По умолчанию таким символом является точка. Параметр разделитель1 является обязательным, если используется параметр разделитель2.
  • разделитель2. Определяет символ, который будет разделителем в целой части числа. По умолчанию в качестве такого символа используется запятая.

В таблице ниже приведено несколько примеров использования функции number_f ormat().

$number
Формат
Результат
12321
12321.66
12321.66
12321.6
12321
12321.66
number_format($number)
number_format($number, 2)
number_format($number)
number_format($number, 3)
number_format($number, 0, ".", ".");
number_format($number, 2,
".", "");
12,321
12,321.66
12,322
12,321.600
12.321
12321.66

После форматирования число конвертируется в текстовую строку. Поэтому все арифметические операции необходимо выполнить до форматирования.

Для более сложного форматирования в языке РНР предназначены функции printf() и sprintf().

  • Функция printf() позволяет напрямую выводить число в заданном формате.
  • Функция sprintf() сохраняет форматируемое число в переменной.

Функции printf() и sprintf() одновременно позволяют форматировать как строки, так и числовые значения. Более подробно эти функции рассматриваются ниже, в разделе "Форматирование текстовых строк".

Форма входа

Мини-чат

Календарь новостей
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Поиск

Друзья сайта
Скажи сайту спасибо
ЯндексЯндекс. ДеньгиХочу такую же кнопку



Получить WMR-бонус на свой кошелек!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz