Нельзя преобразовать тип 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}))