dr["po_amt"].ToString() = 1,936.10;
当我尝试使用下面的代码将其转换为int32时,
Convert.ToInt32(dr["po_amt"].ToString());
它抛出错误输入字符串格式不正确。我怎样才能实现这个目标
答案 0 :(得分:9)
您正在尝试将“1,936.10”转换为整数。那显然不是整数。您应该将其解析为浮点数(例如,使用decimal.TryParse
)然后应用您想要获得整数的任何转换,如果确实您确实做想要一个整数。
(顺便说一下,我会强烈建议您使用decimal.TryParse
而不是float.TryParse
或double.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);