C#类型转换
dr["po_amt"].ToString() = 1,936.10;
当我尝试转换该使用下面的代码为int32,C#类型转换
Convert.ToInt32(dr["po_amt"].ToString());
它引发错误输入字符串的不正确的格式。我如何实现这一点
将其转换为双并将其转换为int
int i = (int)Convert.ToDouble("1203.12");
作品:-)
您试图将“1,936.10”转换为整数。很明显,不是的整数。您应该将其解析为浮点数(例如使用decimal.TryParse
),然后应用任何想要获得整数的转换,如果确实确实需要需要整数。
(我会强烈建议您使用decimal.TryParse
在float.TryParse
或double.TryParse
,顺便说一句,显然该字符串表示十进制一些,所以这是最合适的类型使用。)
当转换为decimal
时,您应该指定不变的文化(如果您位于使用“。”作为千位分隔符并且“,”作为小数点分隔符的区域),并且不会显式指定数字风格,允许数千人。
您不能转换1,936.10
为整数,但你可以将其转换为浮动点,然后将它转换:
(Int32) Convert.ToDouble("1,936.10", CultureInfo.InvariantCulture)
注意使用CultureInfo
,以避免当你在一个语言环境中运行的问题,其中浮点数格式是不同的。
投射浮点数将截断小数部分。如果你需要围绕它,你应该在施放之前应用Math.Round()
。
我认为这是这种情况的最佳解决方案 – 2010-09-21 11:41:48
除了Skeet对'decimal'是正确的。 – 2010-09-21 12:12:35
尝试解析到浴液从而转换成的Int32:
var d = float.Parse("1936,10");
Convert.ToInt32(d);
嗯,这是不是一个整数值,所以你不能把它转换为整数。你想对价值做什么? – 2010-09-21 11:37:41
dr [“po_amt”]中的值的类型是什么?如果是这种情况,将该值转换为字符串只是为了将其解析回它的类型。 – dtb 2010-09-21 11:42:44