我有一个包含双重类型的变量,例如56.3433253。我想将它转换为long类型并保持小数位。
有什么想法吗?
答案 0 :(得分:1)
您不能将double转换为long类型并在同一个变量中保持小数。但是,您可以通过删除小数并将小数点后的#值存储在单独的变量中来将小数转换为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}))
答案 1 :(得分:0)
long定义为整数,你怎么能有decinals。或许这个:
lval as long = math.floor(dval)
decval as double = dval - lval
答案 2 :(得分:0)
长64位且始终变量为double,但是你将删除该点之后的数字,我建议你使用小数。
Dim number As Double = 56.3433253
Dim number1 As decimal = number
me.Text = number1.ToString
问候。