Попробуйте:
rand.round(2)
rand
генерирует случайное число, round
округляет его до нужного числа десятичных знаков. Это может генерировать число, которое имеет МЕНЬШЕ, чем две десятичные цифры (например, 0.5
). Если вы хотите применить это, вы можете отформатировать случайное число в строку:
Kernel.format("%.2f", rand)
, где %f
- форматирование, так как float и %.2f
задает c для две десятичные цифры. Вы можете фактически пропустить Kernel
и просто позвонить format
или использовать %
примерно так:
"%.2f" % rand
(я предпочитаю Kernel.format
, мне кажется более читабельным)
Сейчас это создает еще одну проблему:
pattern = "%.2f"
Kernel.format(pattern, 0) # => "0.00"
Kernel.format(pattern, 0.9999999) # => "1.00"
, поскольку оно округляется при форматировании числа, которое внезапно не становится меньше 1
. Если между вы подразумевали НЕ ВКЛЮЧИТЬ 1, вам нужно еще немного подправить:
Kernel.format(pattern, 0.floor(2)) # => "0.00"
Kernel.format(pattern, 0.9999999.floor(2)) # => "0.99"