2011-11-09 2 views
0

数字が1.29999であるとします。私はちょうど1.2の後ろに9を持たないでほしいです。注:私は1.3に丸めることは望ましくありません。これはどうすればいいですか?私は数字ヘルパーがあることを知っているが、私はこの作業を得ることができないのビュー。何か案は?Ruby:数字の有効数字を削除しますか?

たとえば、普通のモデル関数に入れた場合、number_with_precision 111.2345, :precision => 2は機能しません。

ありがとうございます!

答えて

4

別のアプローチは、100.0で割り、次いで100を掛け切り捨てることである:

それ方法作る
$ irb --simple-prompt 
>> (1.29999999*100).truncate/100.0 
=> 1.29 

>> def truncate_to_two (x) 
>> (x * 100).truncate/100.0 
>> end 
=> nil 
>> truncate_to_two 6342.899 
=> 6342.89 
>> truncate_to_two -322.11892 
=> -322.11 
>> truncate_to_two 244.9342 
=> 244.93 
+0

これは私のto_sのアプローチよりも優れています。 –

1

初心者ですが、それを行うには数学の代わりに文字列操作を使用できます。例:

x = 1.29999 
truncated = x.to_s.match(/(\d+\.\d{2})/)[0] # assumes the format "n.nn" with 2 or more digits of precision; the regex can be expanded to handle more cases 
+0

+1私はこのように否定的に拡張することは容易であるので/( - ?\ d + \。\ d {2})/)[0] ' –

0

お客様のモデルでは、いつでもinclude ActionView::Helpers::NumberHelperを使用してヘルパーにアクセスできます。

関連する問題