数字が1.29999
であるとします。私はちょうど1.2
の後ろに9
を持たないでほしいです。注:私は1.3
に丸めることは望ましくありません。これはどうすればいいですか?私は数字ヘルパーがあることを知っているが、私はこの作業を得ることができないのビュー。何か案は?Ruby:数字の有効数字を削除しますか?
たとえば、普通のモデル関数に入れた場合、number_with_precision 111.2345, :precision => 2
は機能しません。
ありがとうございます!
数字が1.29999
であるとします。私はちょうど1.2
の後ろに9
を持たないでほしいです。注:私は1.3
に丸めることは望ましくありません。これはどうすればいいですか?私は数字ヘルパーがあることを知っているが、私はこの作業を得ることができないのビュー。何か案は?Ruby:数字の有効数字を削除しますか?
たとえば、普通のモデル関数に入れた場合、number_with_precision 111.2345, :precision => 2
は機能しません。
ありがとうございます!
別のアプローチは、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
初心者ですが、それを行うには数学の代わりに文字列操作を使用できます。例:
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
+1私はこのように否定的に拡張することは容易であるので/( - ?\ d + \。\ d {2})/)[0] ' –
お客様のモデルでは、いつでもinclude ActionView::Helpers::NumberHelper
を使用してヘルパーにアクセスできます。
これは私のto_sのアプローチよりも優れています。 –