C#类型转换

问题描述:

dr["po_amt"].ToString() = 1,936.10; 

当我尝试转换该使用下面的代码为int32,C#类型转换

Convert.ToInt32(dr["po_amt"].ToString()); 

它引发错误输入字符串的不正确的格式。我如何实现这一点

+1

嗯,这是不是一个整数值,所以你不能把它转换为整数。你想对价值做什么? – 2010-09-21 11:37:41

+1

dr [“po_amt”]中的值的类型是什么?如果是这种情况,将该值转换为字符串只是为了将其解析回它的类型。 – dtb 2010-09-21 11:42:44

将其转换为双并将其转换为int

int i = (int)Convert.ToDouble("1203.12"); 

作品:-)

您试图将“1,936.10”转换为整数。很明显,不是的整数。您应该将其解析为浮点数(例如使用decimal.TryParse),然后应用任何想要获得整数的转换,如果确实确实需要需要整数。

(我会强烈建议您使用decimal.TryParsefloat.TryParsedouble.TryParse,顺便说一句,显然该字符串表示十进制一些,所以这是最合适的类型使用。)

当转换为decimal时,您应该指定不变的文化(如果您位于使用“。”作为千位分隔符并且“,”作为小数点分隔符的区域),并且不会显式指定数字风格,允许数千人。

您不能转换1,936.10为整数,但你可以将其转换为浮动点,然后将它转换:

(Int32) Convert.ToDouble("1,936.10", CultureInfo.InvariantCulture) 

注意使用CultureInfo,以避免当你在一个语言环境中运行的问题,其中浮点数格式是不同的。

投射浮点数将截断小数部分。如果你需要围绕它,你应该在施放之前应用Math.Round()

+0

我认为这是这种情况的最佳解决方案 – 2010-09-21 11:41:48

+0

除了Skeet对'decimal'是正确的。 – 2010-09-21 12:12:35

尝试解析到浴液从而转换成的Int32:

var d = float.Parse("1936,10"); 
Convert.ToInt32(d);