2011-09-15 13 views
0

さまざまなハッシュ、配列、ハッシュの配列などからコードを抽出して請求するコードを書いています。請求書には、販売されたアイテムを小計し、地方税(カナダ、GST総計を思い付くことのすべてを持っている私は、フォーマットに対処するための小さなブロックがあります。。Rubyの丸めの問題

def currency amount 
sprintf("$%.2f",amount) 
end 

することはもちろん、ドル記号とfloatとして金額を入れている私は問題を抱えています。丸めをします。私の請求書の1つは、1ペニー以上の必要があります。私は、浮動小数点精度の全体を理解する、それは私の問題ではありません。私の指導者は、通貨ブロックを変更する必要があると言います。 、そしてcurrを使った後に100で割るency:

puts "GST (#{tax(GST*100)}%) :#{currency(gst_total/100)}" 

しかし、もちろん浮動小数点数のすべてをフォーマットして同じ問題があります。これをどのように修正できますか?

答えて

1

合計する前にアイテムや税額を丸めなければならないことがあります。たとえば、RoundCents(1.004 * 3)は3.01ですが、RoundCents(1.004)* 3は3.00です。

または、銀行家の丸めの犠牲者になる可能性があります。