2013-12-14 4 views
20

Как округлить целое число до ближайшего кратного десяти?Ruby 2.0 - округление целого числа до ближайшего кратного значения 10

Я пробовал integer.round(0.1), но дает ближайший десятичный номер.

Пример: 3 должна возвращать 0, 55 должен вернуться 60.

Есть ли способ, который будет округлить до ближайшего числа, кратного 10?

+0

'10 * ((x + 5)/10)' будет работать для целых неотрицательных чисел. –

ответ

38

Integer#round имеет функциональность.

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

Округление до ближайшего 10:

55.round(-1) # => 60 

Чтобы округлить до ближайшего 100:

550.round(-2) # => 600 
+0

Это будет округлять до одной важной фигуры и не обязательно до «десятки» точности. –

+0

Ох ... Итак, я делаю номер _negative_. Спасибо! –

+0

@AaronCronin Я тебя не понял .. :( –

11

Вы можете просто разделить на 10, круглые, а затем умножить на 10:

nearest = (x/ 10).round * 10 
+0

'(15/10) .round * 10' возвращает' 10', но должен был возвратить '20'. –

+2

Это просто из-за целочисленного деления, усекающего десятичное число, если вы разделите его на '10.0', вместо этого оно будет округлено до 20. –

+2

Если вы хотите округлить независимо от того, что (это было для меня требованием), вы могли бы сделать (x/10.0) .floor * 10 – sixty4bit

Смежные вопросы