重要でない小数点以下の桁を削除する 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 を渡す場合、重要な末尾のゼロが削除されます。それを防ぐ方法も、あなた自身が考えなければなりません。