vb.net を使用して一連の通貨値のバランスをとろうとしています。これら両方の値の合計は double としてキャストされます。状況によっては、丸め誤差が発生します。
これを回避する最善の方法は何ですか? double よりも優先して使用できるタイプはありますか? 結果の値を小数点以下 2 桁に丸めるにはどうすればよいですか?
これが私のコードです - おそらく表示する必要はありませんが、念のために。
Dim nInvValue As Double
Dim nCreditValue As Double
For Each oReferenceItem In oMatchInvoices
Dim nUnallocated As Double = oReferenceItem.DocumentOutstandingValue - oReferenceItem.DocumentAllocatedValue
If ((nUnallocated <> 0) And (sReferenceValue = oReferenceItem.InstrumentNo)) Then
iCount = iCount + 1
If (oReferenceItem.IsDebit) And (nUnallocated > 0) Then
nInvValue = nInvValue + nUnallocated
InvoiceList.Add(nUnallocated.ToString("c"), oReferenceItem.URN.ToString)
End If
If (oReferenceItem.IsCredit) And (nUnallocated < 0) Then
nCreditValue = nCreditValue - nUnallocated
CreditList.Add(nUnallocated.ToString("c"), oReferenceItem.URN.ToString)
End If
End If
Next