decimal to long - 总是缺少点分隔符

时间:2011-12-09 10:19:54

标签: c# type-conversion

我希望能够转换

varchar > decimal > long

dbreader[11]拥有3319419,13作为varchar

例如:

decimal d = Convert.ToDecimal(dbreader[11], CultureInfo.InvariantCulture);

我得到了

d = 3319419.13M

当我将其转换为长对象时,我最终得到了

long i = 3319419

我想以 3319419,1

结束

5 个答案:

答案 0 :(得分:3)

它永远不会,我害怕。 longSystem.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