VB.NET의 복식에서 반올림 오류에 대처하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/186693

  •  06-07-2019
  •  | 
  •  

문제

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
도움이 되었습니까?

해결책

재무 계산의 경우, 현재의 지혜는 복식 대신 소수를 사용하는 것이라고 생각합니다.

이 토론에 관심이있을 수 있습니다 십진수 대 더블.

다른 팁

소수점 유형을 사용해보십시오.

MSDN- 소수점

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top