2
我正在嘗試使用vb.net來平衡一組貨幣值。這兩個值的總數都是雙倍數。在某些情況下,我會發生四捨五入錯誤。如何應對vb.net中的雙精度舍入錯誤?
避免這種情況的最好方法是什麼?有沒有我可以使用的類型優先翻倍?如何將結果值舍入到小數點後兩位?
這是我的代碼 - 我可能不需要顯示它,但以防萬一。
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