たとえば、すべての計算が10進データ型を使用して実行されると仮定して、トランザクションを挿入しています。
Amount : $45.35
TAX : $ 1.72
-----------------
Total : $47.07
ここで、販売バウチャーを作成し、3つの値すべてを保存するとします。保存中に、3つの値すべてをdoubleに変換します。したがって、2進浮動値になります。
ユーザーが古い販売バウチャーを再度開こうとすると、3つの値を取得しようとします。四捨五入と変換(2進数から10進数へ)が原因で発生する可能性があります。異なる値を受け取ります。これは次のように表示される場合があります。
Amount : $45.36 (//changed)
TAX : $ 1.72
-----------------
Total : $47.07 (//Total sum is as stored, but when you sum
//actual values retrieved, they are different.)
これは私の経験に基づいており、現在、この発生を技術的に説明することはできません。
保管するだけの場合もありAmount
ますTax Rate
が、それらを追加すると、顧客が持っている実際の販売バウチャーよりも合計が1セント多くなります。
Amount : $45.36 /*View after sales*/ Amount : $45.35 /*What customer's*/
TAX : $ 1.72 TAX : $ 1.72 /*voucher says:*/
----------------- -----------------
Total : $47.07 Total : $47.07