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

Хитрости
Хитрости

Задача: выдать целое число в двоичной системе счисления.
start_number = 1234
puts sprintf("%b", start_number) # метод sprintf заимствован из Си
puts start_number.to_s(2) # современный метод — означает «по основанию», 
# аргументом может служить не только 8 и 16, но и 5, 30…
# На самом деле, основание не может превышать 36, 
# что вполне объяснимо — 10 цифр и 26 букв латинского алфавита.


Поменять порядок цифр данного числа на обратный:
start_number = 1234
puts start_number.to_s.reverse # метод reverse переворачивает строку


Получить значение N-го двоичного разряда данного целого числа:
start_number, N = 1234, 5
puts start_number[N]


Поменять целочисленные значения двух переменных без использования третьей переменной:
number_one, number_two = 134, 234
number_one, number_two = number_two, number_one


Округлить число с плавающей запятой до двух разрядов:
float_integer = 3.1415926535
puts (float_integer * 100).to_i.to_f / 100
puts ((float_integer + 0.005) * 100).to_i / 100.0
puts sprintf("%.2f", float_integer).to_f # полуСишный способ =)


На самом деле во второй строке оставляются два знака после запятой, а остальные просто отбрасываются безо всяких округлений, в то время как в третьей строке действительно происходит округление до двух знаков после запятой. Это легко проверить попытавшись округлить до трёх знаков после запятой:
float_integer = 3.1415926535
puts (float_integer * 1000).to_i.to_f / 1000 #=>3.141
puts ((float_integer + 0.0005) * 1000).to_i / 1000.0 #=>3.142
puts sprintf("%.3f", float_integer).to_f #=>3.142


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