我有一个值123456789012345.89,我将其分配给对象类型变量。默认情况下,它被指定为双重对象和丢失精度(123456789012346),因为对于double类型,值太大。有没有办法可以将对象中的值作为十进制而不是双倍?
Dim obj As Object = 123456789012345.89
Dim deci As Decimal = obj
Console.WriteLine(deci)
Console.WriteLine(obj.ToString())
答案 0 :(得分:2)
使用123456789012345.89D
代替123456789012345.89
分配正确的类型:
Dim obj As Object = 123456789012345.89D ' now it's a Decimal
Dim deci As Decimal = DirectCast(obj, Decimal)
Console.WriteLine(deci)
我还强烈建议您将Option Strict
设置为On
。然后,您必须使用DirectCast
(或CType
)将对象强制转换为十进制。但是你获得了编译时的安全性。