2

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
4

2 に答える 2

5

財務計算では、現在の知恵は、Double の代わりに Decimals を使用することだと思います。

このディスカッションに興味があるかもしれません。ダブル

于 2008-10-09T10:43:39.647 に答える
3

Decimal 型を使用してみてください。

MSDN - 10 進数

于 2008-10-09T10:40:11.997 に答える