Главная » Статьи » 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 | |
Просмотров: 1397 | | |
Всего комментариев: 0 | |