我希望能够转换
varchar > decimal > long
当dbreader[11]
拥有3319419,13
作为varchar
例如:
decimal d = Convert.ToDecimal(dbreader[11], CultureInfo.InvariantCulture);
我得到了
d = 3319419.13M
当我将其转换为长对象时,我最终得到了
long i = 3319419
我想以 3319419,1
结束答案 0 :(得分:3)
它永远不会,我害怕。 long
是System.Int64
的同义词 - 64位整数值,因此无法存储您要求的精度。见here
答案 1 :(得分:2)
你不能在long
中以3319419,1结尾,因为long
是整数。
请尝试使用double
。
编辑:现在,double
恰好是一个浮点数。这意味着此类型能够表示的小数位数不是固定的,而是可变的。因此,如果您想查看特定数量的十进制数字,那么这完全是显示问题。因此,为了看到只有一位数的双变量,请将其转换为字符串,如下所示:String.Format( "{0:00.0}", my_double_variable );
答案 2 :(得分:0)
long是8字节整数(整数)。如果需要更高的精度,请使用double(8字节十进制)
答案 3 :(得分:0)
现实检查。
3319419,1
长期无法保留部分号码。 1,2,3 - 不是1,1.1,1.2。这是一个很长的定义。
所以,无论你想要什么,你都不能长时间保持小数值。想要保留小数值 - 使用可以的数据类型。
答案 4 :(得分:0)
long
没有任何小数。它是一个整数类型。
您可能希望使用double
,或将其保留为decimal
。