2009-07-15 13 views
1

私は現在、浮動小数点数を四捨五入しようとしていますが、私のようなエラーメッセージが出ます:フロート16.666667ための未定義のメソッドround_toを...と四捨五入のための私のコードはどのような種類のデータを四捨五入することができますか?

option = [keys[count], (((o.poll_votes.count.to_f)/@general_poll.poll_votes.count.to_f)*100).round_to(1)] 

ですそして、何ほとんどを私にサプライズしていることです私はいくつかの場所でこのコードを使用して、ちょうど良い動作している..しかし、今私はエラーを与えている。

ありがとうございます。

答えて

4

round_toメソッドはruby coreのどこにも存在しません。ほとんどの場合、この機能は以前使用していたライブラリに含まれていましたが、現在のプロジェクトでは不要でした。クイック検索の後、この機能がRuby Facetsライブラリに含まれているように見えます。この記事では、この機能を自分で追加する

gem install facets 

チェック:http://www.hans-eric.com/code-samples/ruby-floating-point-round-off/

FTA:私たちは、カスタム追加Floatクラスにメソッドを締めくくることができます小さな猿のパッチで

class Float 
    def round_to(x) 
    (self * 10**x).round.to_f/10**x 
    end 

    def ceil_to(x) 
    (self * 10**x).ceil.to_f/10**x 
    end 

    def floor_to(x) 
    (self * 10**x).floor.to_f/10**x 
    end 
end 

------------------チョキ8 < -------------------

+0

私は図書館に何もなかったことに気付きました。この猿のパッチをどうやって使うことができるのか詳しく説明してください。とにかく応答に感謝します。 –

+0

モンキーパッチは、既に定義されているクラスにメソッドを追加することを意味しています。このコードをプロジェクトに追加すると、Floatが拡張され、メソッドが利用可能になります。 ファセットの宝石をチェックアウトしたところ、round_toとround_atの2つのメソッドがあるようです。 round_atは、上記のコードを模倣しています。 –

+0

私のアプリケーションでは、3回目の '.to_f'を'(self * 10 ** x).round'の後に削除しなければなりませんでした。 'Slope = -0.4123800000000001' – Marcos

関連する問題