2011-12-09 28 views
0

我希望能够转换小数长 - 总是缺少点分隔

varchar > decimal > long 

dbreader[11]持有3319419,13为varchar

例如:

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

我得到

d = 3319419.13M 

当我将它转换为长对象我结束了

long i = 3319419 

我想结束了3319419,1

+4

长是一个8字节的整数(整数) – craig1231

+1

不是一个C#开发人员我可能是错的,但不是一个整数数据类型?你是否期望整数持有一个浮点数? –

+1

要澄清,你想要显示的数字作为文本,即“3319419,1”,或将数字四舍五入到一位小数,即3319419.1? – harriyott

回答

2

long你不能3319419,1结束了,因为long是整数。 尝试使用double代替。

编辑:现在,double恰好是一个浮点数。这意味着此类型能够表示的小数位数不是固定的,而是可变的。所以,如果你想看到一个特定的小数位数,那么这完全是一个显示问题。所以,为了看到你的双变量只有一个数字,将其转换为字符串如下:String.Format("{0:00.0}", my_double_variable);

0

long是一个8字节的整数(整数)。如果您需要更高的精度,请使用双精度(8字节小数)

3

它永远不会,我害怕。 longSystem.Int64的同义词 - 64位整数值,因此无法存储您要求的精度。见here

0

现实检查。

3319419,1

长是无法保持部分的数字。 1,2,3 - 不是1,1.1,1.2。这是一个很长的定义。因此,无论您想要什么,您都无法将分数值保留很长一段时间。想要保留小数值 - 使用可以的数据类型。

0

A long没有任何小数。它是一个整数类型。

您可能想要使用double,或将其保留为decimal