Rubyでフロートの表示精度を設定することは可能ですか?
何かのようなもの:
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
または、Float
のto_s
メソッドをオーバーライドする必要がありますか?
z.round(2)
またはx.round(3)
が最も簡単なソリューションです。 http://www.Ruby-doc.org/core-1.9.3/Float.html#method-i-round を参照してください。
とは言っても、それはその数字以下であることを保証するだけです。 1/3の場合は問題ありませんが、0.25.round(3)
と言った場合、0.250ではなく0.25になります。
Sprintfを使用できます。
sprintf( "%0.02f", 123.4564564)
私は通常、次のようなオープンコードで変換を行います:
puts "%5.2f" % [1.0/3.0]
Rubyは、このような式に対して Kernel#format を呼び出します。これは、Stringに core operator%defined が含まれているためです。 Rubyのprintfと考えてください。
プットを使用できます
z = #{'%.3f' % z}