Главная » Статьи » Ruby » Более подробно о типах данных

Арифметические операции
Арифметические операции

Арифметические операции в Ruby обычны: сложение (+), вычитание (-), умножение (*), деление (/), получение остатка от деления (%), возведение в степень (**).
6 + 4 #=> 10
6 - 4 #=> 2
6 * 4 #=> 24
6 / 4 #=> 1
6 % 4 #=> 2
6 ** 4 #=> 1296


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

Порядок вычисления обычный. Для изменения приоритета применяются круглые скобки:
2 + 2 * 2 #=> 6
(2 + 2) * 2 #=> 8


Первое, что бросается в глаза, — результат арифметической операции двух целых чисел всегда будет целым. Особенно это видно при делении:
1/3 #=> 0
2/3 #=> 0
3/3 #=> 1


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

Одна вторая в Ruby ноль,
А три вторые — единица.
Запомнить надо эту соль,
Чтоб результату не дивиться.

Посмотрим, каковы результаты, когда одно из чисел является числом с плавающей запятой.
6.0 + 4 #=> 10.0
6 - 4.0 #=> 2.0
6.0 * 4.0 #=> 24.0
6.0 / 4 #=> 1.5 (одно из чисел с плавающей запятой, значит результат с плавающей запятой)
6.0 % 4 #=> 2.0
6 ** 4.0 #=> 1296.0


Лучше проверить эти сведения самостоятельно.
Поразрядная арифметика
Знак операции
Название
&
Побитовое «и»
|
Побитовое «или»
^
Побитовое «исключающее или»
<<
Побитовый сдвиг влево
>>
Побитовый сдвиг вправо
~
Побитовая инверсия


Операции побитовой арифметики заимствованы из языка Си. На этот раз без всяких экзотических особенностей.
6 & 4 #=> 4
6 | 4 #=> 6
6 ^ 4 #=> 2
6 << 4 #=> 96
6 >> 4 #=> 0 (чересчур намного сдвинули)
~4 #=> -5 (операция только над одним аргументом)


Здесь, вроде, всё понятно и без дополнительных пояснений. А если непонятно, то справочник по языку Си поможет.
Операции с присваиванием

Часто можно встретить выражения вида:
number_one += number_two

Это выполнение операции сразу с присваиванием. Вышеуказанная запись равнозначна следующей:
number_one = number_one + number_two

Вполне естественно, что вместо операции + может использоваться любая другая, а вместо чисел могут быть другие типы данных.
string = "едем"
string += ", "
string *= 3
string #=> "едем, едем, едем, "

 
array = [1, 2, 3]
array += [4, 5]
array #=> [1, 2, 3, 4, 5]


При определении метода + метод += вы получаете в подарок. Это правило касается всех бинарных операций, обозначаемых значками.


Категория: Более подробно о типах данных | Добавил: Kostya (10.05.2009)
Просмотров: 4409 | Теги: поразрядная арифметика, присваивание, арифметические операции, Ruby | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]