どうすればルビーだけ高く丸めることができるので、最後の2つの数字がnullになるのですか? たとえば
4233.000001 to 4300
52825 to 52900
627444 to 627500
111999 to 112000
?
これで、round(-2) を介して数学ルールでのみ丸めることができますが、最後に 2 つの null のみを使用して、より高くのみ行う方法は?
どうすればルビーだけ高く丸めることができるので、最後の2つの数字がnullになるのですか? たとえば
4233.000001 to 4300
52825 to 52900
627444 to 627500
111999 to 112000
?
これで、round(-2) を介して数学ルールでのみ丸めることができますが、最後に 2 つの null のみを使用して、より高くのみ行う方法は?
使用する必要がありますceil
def my_round a
(a / 100.0).ceil * 100
end
my_round 4233.000001 # => 4300
my_round 52825 # => 52900
my_round 627444 # => 627500
my_round 111999 # => 112000
Sergioの答えに取り組んで、モジュールを実際のNumeric
オブジェクトに混ぜて、より一般的な解決策を得ることができます:
module RoundsUp
def round_up(ndigits)
pow_ten = 10 ** -ndigits
(self / pow_ten.to_f).ceil * pow_ten
end
end
それから
mynumeric = 262.33
mynumeric.extend(RoundsUp)
mynumeric.round_up(-2) #=> 300
round
そして、任意の桁数に対して通常のように動作するメソッドがあります