Эквивалент валюты в VB. Net? - PullRequest
2 голосов
/ 07 мая 2020

Я переношу приложение с VB6 на VB. Net, которое использует класс / структуру валюты. Мой вопрос: что является «эквивалентом» VB6 Currency в следующем коде?

Public Function getTimeElapsed() As Double

    Dim cuStart As Currency
    Dim cuStop As Currency
    Dim cuFreq As Currency
    Dim v As Double
    Dim ReturnValue As Double

    QueryPerformanceFrequency(liFrequency)

    cuStart = LargeIntToCurrency(liStart)
    cuStop = LargeIntToCurrency(liStop)
    cuFreq = LargeIntToCurrency(liFrequency)
    ' elapsed time
    v = CDbl(cuStop - cuStart) / CDbl(cuFreq)
    Select Case ResultUnit
        Case CounterUnit.Second
            ReturnValue = v
        Case CounterUnit.Millisecond
            ReturnValue = v * 1000.0#
        Case CounterUnit.microsecond
            ReturnValue = v * 1000000.0#
        Case CounterUnit.nanosecond
            ReturnValue = v * 1000000000.0#
    End Select
    Return ReturnValue
End Function
Private Function LargeIntToCurrency(liInput As LARGE_INTEGER) As Currency
    CopyMemory(LargeIntToCurrency, liInput, Strings.Len(liInput))
    LargeIntToCurrency = LargeIntToCurrency * 10000
End Function

'Currency' дает такую ​​ошибку в VB. Net. Есть ли какая-нибудь недостающая библиотека, которая для этого необходима?

enter image description here

1 Ответ

7 голосов
/ 07 мая 2020

Данные, представляющие валюту, должны храниться как Decimal значения в VB. NET. Он не подвержен ошибкам округления, как Double.

...