回答:
(5.65235534).round(2)
#=> 5.65
(5.6).round(2)
は5.6のみを返します
sprintf('%.2f', number)
不可解ですが、数値をフォーマットする非常に強力な方法です。結果は常に文字列ですが、丸めているので、とにかくプレゼンテーションの目的でそれを行っていると思います。sprintf
ほぼすべての数値を好きなようにフォーマットできます。
sprintfの完全なドキュメント:http : //www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
'%.2f' % number
また、作品は、少なくとも私の経験では、より一般的に見られます。
sprintf
(またはformat
)優先し%
ます。その理由はここで説明しますが、ほとんどは読みやすさに関するものです。私たち全員がいくつかの理由を挙げてスタイルガイドに従う必要があるわけではありません:)
0.566666666666666
丸め0.57
"%.2f"
切り上げるの5
ではなく切り捨てて、それを修正する方法はありますか?
フィードバックを得た後、元のソリューションが機能しなかったようです。そのため、提案の1つとして回答を更新しました。
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
小数点以下2桁の丸めた数値が必要な場合は、他の回答も機能します。ただし、小数点以下第2位までの四捨五入を行わずに浮動小数点数を取得する場合、これらの回答は役に立ちません。
したがって、小数点以下第2位までの浮動小数点数を取得するには、この手法を使用しました。場合によっては機能しません
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
で5.666666666666666666666666
、5.66
丸め5.67
られる代わりに戻ります。それが誰かを助けることを願って
def float_of_2_decimal(float_n) num = float_n.to_s.split('.') num[1] = num[1][0..1] num.join(".").to_f end
または、もっと簡単に使用できますfloat_n.to_d.round(2, :truncate).to_f
11111111111111111.222222222222222
入力として、最初のショー1.11
2つ目のショー1.11111111111111e+16
これを試して:
module Util
module MyUtil
def self.redondear_up(suma,cantidad, decimales=0)
unless suma.present?
return nil
end
if suma>0
resultado= (suma.to_f/cantidad)
return resultado.round(decimales)
end
return nil
end
end
end
小数を切り捨てるには、次のコードを使用しました。
<th><%#= sprintf("%0.01f",prom/total) %><!--1dec,aprox-->
<% if prom == 0 or total == 0 %>
N.E.
<% else %>
<%= Integer((prom/total).to_d*10)*0.1 %><!--1decimal,truncado-->
<% end %>
<%#= prom/total %>
</th>
2桁に切り捨てる場合は、 Integr(a*100)*0.01