C#类型转换

时间:2010-09-21 11:36:26

标签: c#

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

当我尝试使用下面的代码将其转换为int32时,

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

它抛出错误输入字符串格式不正确。我怎样才能实现这个目标

4 个答案:

答案 0 :(得分:9)

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

(顺便说一下,我会强烈建议您使用decimal.TryParse而不是float.TryParsedouble.TryParse。显然字符串代表一个数字十进制,因此这是最合适的类型。)

转换为decimal时,您应该指定不变文化(如果您所在的区域使用“。”作为千位分隔符,“,”作为小数分隔符),并且它不会伤害明确指定数字样式,允许数千种。

答案 1 :(得分:3)

您无法将1,936.10转换为整数,但您可以将其转换为浮点然后投射它:

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

请注意使用CultureInfo以避免在浮点数格式不同的区域设置中运行时出现问题。

转换浮点数会截断小数部分。如果您需要对其进行舍入,则应在投射之前应用Math.Round()

答案 2 :(得分:0)

将其转换为Double并将其转换为int

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

有效: - )

答案 3 :(得分:0)

尝试解析到float然后转换为Int32:

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