Techioz Blog

重要でない小数点以下の桁を削除する Ruby コード?

概要

重要でない終わりのゼロを削除するエレガントなコードを取得したいと考えています。

29.970 => 29.97
29.97 => 29.97
25.00 => 25
25.0 => 25

私は試した:

argument.to_r.to_f.to_s

ただし、すべてのケースで機能するわけではありません。たとえば、25.00 では 25.0 になります。

解決策

末尾のゼロは、数値が文字列の場合にのみ意味を持ちます。

def strip_trailing_zero(n)
  n.to_s.sub(/\.0+$/, '')
end

strip_trailing_zero(29.970) # => "29.97"
strip_trailing_zero(29.97)  # => "29.97"
strip_trailing_zero(25.00)  # => "25"
strip_trailing_zero(25.0)   # => "25"
strip_trailing_zero(250)   # => "250"

これは、受信した浮動小数点数を文字列に変換し、単純なサブ検索と置換を使用して末尾の 0 とオプションで小数点を削除します。

必要に応じて、それらを整数と浮動小数点に変換し直す方法を理解できます。これにより、整数/fixnum を渡す場合、重要な末尾のゼロが削除されます。それを防ぐ方法も、あなた自身が考えなければなりません。