2008-10-09 2 views
2

저는 vb.net을 사용하여 일련의 통화 가치를 균형 잡으려고합니다. 이 두 값의 합계는 double 값으로 변환됩니다. 어떤 상황에서는 반올림 오류가 발생합니다.vb.net에서 double에 반올림 오류를 처리하려면 어떻게해야합니까?

이 문제를 방지하는 가장 좋은 방법은 무엇입니까? 내가 더블보다 우선 사용할 수있는 타입이 있습니까? 결과 값을 두 소수점 이하로 반올림하려면 어떻게합니까?

내 코드는 다음과 같습니다. 아마도이 코드를 표시 할 필요는 없지만, 경우에 따라 사용할 수 있습니다.

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 

답변

6

나는 현재의 지혜를 대신 복식의 소수점을 사용하는 것입니다 믿습니다.

Decimal Vs. Double에 관심이 있으실 것입니다.