Ruby の Money gem を使用しています。このアプリケーションでは、通貨間の換算も行っています。
そのため、通貨間で変換するときに丸めの問題が発生します。現在、Ruby の組み込みのFloat#round
.
ただし、これにより「ぶら下がっているペニー」の問題が発生します。
Money.new(500,'USD').exchange_to('EUR')
#=> #Money cents:385 currency:EUR
Money.new(500,'USD').exchange_to('EUR').exchange_to('USD')
#=> #Money cents:501 currency:USD
したがって、5.00 ドルはユーロに変換してから元に戻すと 5.01 ドルになります! これらは、私たちが使用している為替レートです:
{
"GBP_TO_USD"=>1.6,
"USD_TO_GBP"=>0.625,
"GBP_TO_EUR"=>1.2,
"EUR_TO_GBP"=>0.8333333333333334,
"EUR_TO_USD"=>1.3,
"USD_TO_EUR"=>0.7692307692307692
}
この余分なペニーまたは不足しているペニーの問題を回避する丸め方法を使用することは可能ですか? その丸め方法は何ですか?
それとも、これは数学的に解決できない問題ですか?