Rubyでフロートの表示精度を設定することはできますか?
何かのようなもの:
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
to_s
または、のメソッドをオーバーライドする必要がありますFloat
か?
Rubyでフロートの表示精度を設定することはできますか?
何かのようなもの:
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
to_s
または、のメソッドをオーバーライドする必要がありますFloat
か?
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 にコア演算子 % が定義されているためです。ベルが鳴る場合は、Ruby の printf と考えてください。
プットが使える
z = #{'%.3f' % z}