浮動小数点数が3.75の場合、どのように整数3と浮動小数点0.75に分割できますか?Rubyの整数と小数点に浮動小数点を分割する
フロートを文字列に変換してから文字列を "。"で分割し、整数部分に変換して再び浮動小数点数に変換する必要がありますか、これを行うにはよりエレガントな方法?
浮動小数点数が3.75の場合、どのように整数3と浮動小数点0.75に分割できますか?Rubyの整数と小数点に浮動小数点を分割する
フロートを文字列に変換してから文字列を "。"で分割し、整数部分に変換して再び浮動小数点数に変換する必要がありますか、これを行うにはよりエレガントな方法?
あなたが整数を取得するために3.75.to_i
を使用することができます述べたように。 残りの部分を取得する別の方法は、%
演算子を使用しています。 3.75 % 1
あなたはこのために引数1
でNumeric#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]
+1私はこの方法に精通していませんでした。リンクありがとう。 – Gazler
この解決策は、負の数については容認された解決策とは異なります。 '-3.75.to_i#=> -3'ですが、' -3.75.divmod 1#=> [-4、0.25] ' –
ありがとう!ありがとうございます! –
それは賢明な解決策です:)それは私にとっても良いことでした;) –