数年前、私はお金と保険を扱うアプリケーションを書くのを助けました。当初、私たちは浮動小数点数でお金を表しました(大きなノーノ、私は知っています)。ほとんどのアプリケーションで値の加算と減算が行われていたため、問題はありませんでした。しかし、特定の部分は金額のパーセンテージ、したがって乗算と除算を扱っています。整数/ BigIntegerとBigDecimalのお金を表す
すぐに浮動小数点エラーに悩まされ、大きなリファクタリングをしなければなりませんでした。その問題を解決した任意の精度ライブラリを使用しました。しかし、それはあなたが1センチの端数で終わることができるという事実を変えなかった。どのようにそれをラウンドすることになっていますか?短い答えは "it's complicated"です。
今、私は古いものに取って代わるために同様のアプリケーションで作業を開始する準備ができています。私は何年も前からこれを検討してきました。私はいつも、伝統的な人にやさしい$0.00
形式にそれを印刷する機能を持つペニーの数を表す整数(またはBigInteger
)をラップする金額データ型を作成することが最も簡単だと考えました。
しかしこれを調べると、最近実装されたJava Money APIのJSR 354が見つかりました。私はそれがBigDecimal
とお金の表示を裏付けることを発見するために驚いた。そのため、四捨五入のための特定のロジックが含まれています。
あなたの計算で1センチメートルの小数部を運ぶことの利点は何ですか?なぜ私は、1セントが「原子」の形のお金であると言っているのではなく、それをしたいのですか?
ではありません。私は今日、分数セントの価格を持つ商品を買った。 – EJP
あなたは[millage率](http://www.investopedia.com/terms/m/millagerate.asp?lgl=myfinance-layout)に精通していますか?または[ガソリン]の価格(http://www.nacsonline.com/YourBusiness/FuelsReports/GasPrices_2013/Pages/Why-Is-Gas-Priced-Using-Fractions.aspx)? –