2012-02-07 6 views
11

浮動小数点数が3.75の場合、どのように整数3と浮動小数点0.75に分割できますか?Rubyの整数と小数点に浮動小数点を分割する

フロートを文字列に変換してから文字列を "。"で分割し、整数部分に変換して再び浮動小数点数に変換する必要がありますか、これを行うにはよりエレガントな方法?

答えて

13

あなたが整数を取得するために3.75.to_iを使用することができます述べたように。 残りの部分を取得する別の方法は、%演算子を使用しています。 3.75 % 1

+0

ありがとう!ありがとうございます! –

+0

それは賢明な解決策です:)それは私にとっても良いことでした;) –

16

あなたはこのために引数1Numeric#divmodを使用することができます。

は、数値によってNUMを割った商と弾性係数を含む配列を返します。

a.divmod 1 
=> [3, 0.75] 

あなたが正確な値を取得したい場合は、この方法は、同様にBigDecimalのために提供されています:

3.456.divmod 1 
=> [3, 0.45599999999999996] 

require 'bigdecimal' 
div_mod = BigDecimal("3.456").divmod 1 
[div_mod[0].to_i, div_mod[1].to_f] 
=> [3, 0.456] 
+0

+1私はこの方法に精通していませんでした。リンクありがとう。 – Gazler

+2

この解決策は、負の数については容認された解決策とは異なります。 '-3.75.to_i#=> -3'ですが、' -3.75.divmod 1#=> [-4、0.25] ' –

関連する問題