Я пытаюсь сбалансировать набор значений валют с помощью 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