JRuby 1.6.xどうやってjrubyの小数位に浮動小数点数を四捨五入するのですか。
number = 1.1164
number.round(2)
The above shows the following error
wrong number of arguments (1 for 0)
これを小数点以下2桁に丸めるにはどうすればよいですか?
Float#roundは、Ruby 1.8ではなく、Ruby 1.9ではパラメータを取ることができます。 JRubyのデフォルトは1.8ですが、 1.9モードでの動作 が可能です。
(5.65235534).round(2)
#=> 5.65
sprintf('%.2f', number)
は不可解ですが数字をフォーマットする非常に強力な方法です。結果は常に文字列ですが、四捨五入しているので、とにかくプレゼンテーションを目的としていると思います。 sprintf
は、好きなように任意の数をフォーマットできます。
完全なsprintfドキュメント: http://www.Ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
フィードバックを得た後、それはオリジナルの解決策がうまくいかなかったようです。そのため、提案の1つとして回答を更新しました。
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
小数点以下2桁の四捨五入したい場合は、他の答えでうまくいくかもしれません。しかし、小数点以下2桁の浮動小数点数を丸めずにしたい場合は、これらの答えは役に立ちません。
だから、最初の小数点以下2桁の浮動小数点数を得るために、私はこのテクニックを使いました。 いくつかのケースでは動作しません
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
5.666666666666666666666666
を指定すると、丸められた5.66
の代わりに5.67
を返します。誰かに役立つことを願っています