Двойной тип к длинному типу - PullRequest
0 голосов
/ 18 августа 2011

У меня есть переменная, содержащая тип double, например, 56.3433253. Я хочу преобразовать его в длинный тип и сохранить десятичные разряды.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 19 августа 2011

Нельзя преобразовать тип double в тип long и сохранить десятичные дроби в одной и той же переменной.Однако вы можете преобразовать десятичное число в длинное, удалив десятичное число и сохранив # значений, которые были после десятичного, в отдельной переменной.

    Dim dbl As Double = 56.3433253
    Dim lng As Long
    Dim decimals As Integer
    Dim tmp As String = String.Empty

    'Convert to string to parse for decimal place
    tmp = dbl.ToString

    If tmp.IndexOf(".") = 0 Then
        lng = CLng(dbl)
        decimals = 0
    Else
        tmp = tmp.Substring(tmp.IndexOf(".") + 1)
        decimals = tmp.Length
        lng = CLng(dbl * Math.Pow(10, decimals))
    End If

    'Convert long value back to a double
    Dim newDbl As Double = CDbl(lng / Math.Pow(10, decimals))

    MsgBox(String.Format("Long: {0}{1}Decimals: {2}{1}Original Value: {3}", {lng, vbCrLf, decimals, newDbl}))
0 голосов
/ 18 августа 2011

длиной с 64-битной и всегда переменной, как двойной, но вы будете удалены цифра после точки, я предлагаю вам использовать десятичную.

0 голосов
/ 18 августа 2011

длина определяется как целое число, как вы можете иметь десятичные.Или, возможно, это:

lval as long = math.floor(dval)
decval as double = dval - lval
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...