Развернуть до ближайшей десятой?

Мне нужно округлить до ближайшей десятой. Мне нужно ceil, но с точностью до первого десятичного знака.

Примеры:

10.38 would be 10.4
10.31 would be 10.4
10.4 would be 10.4

Итак, если это какая-то сумма за десятую часть, она должна быть округлена.

Я запускаю Ruby 1.8.7.

Ответ 1

Это работает в целом:

ceil(number*10)/10

Итак, в Ruby это должно выглядеть так:

(number*10).ceil/10.0

Ответ 2

Метод Ruby round может потреблять точность:

10.38.round(1) # => 10.4

В этом случае 1 округляет вас до ближайшей десятой.

Ответ 3

Если у вас есть ActiveSupport, он добавляет круглый метод:

3.14.round(1) # => 3.1
3.14159.round(3) # => 3.142

Источник выглядит следующим образом:

def round_with_precision(precision = nil)
  precision.nil? ? round_without_precision : (self * (10 ** precision)).round / (10 ** precision).to_f
end

Ответ 4

Чтобы округлить до ближайшей десятой в Ruby, вы могли бы сделать

(number/10.0).ceil*10

(12345/10.0).ceil*10 # = > 12350

Ответ 5

(10.33  + 0.05).round(1) # => 10.4

Это всегда округляется как ceil, сжато, поддерживает точность и без глупости /10 * 10.0.

Например. округлить до ближайшей сотой:

(10.333  + 0.005).round(2) # => 10.34

С точностью до тысячных

(10.3333  + 0.0005).round(3) # => 10.334

и т.п.