我的代码就像这样
string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{
// It was assigned.
}
现在代码执行从不进入if case,这意味着try parse无效。谁能告诉我代码有什么问题。
注意:第一步有意将值24000.0000指定为字符串。
答案 0 :(得分:10)
使用第二个TryParse
重载,允许您指定NumberStyle
参数以允许小数。
int val =0;
var parsed = int.TryParse("24000.0000",
NumberStyles.Number,
CultureInfo.CurrentCulture.NumberFormat,
out val);
答案 1 :(得分:8)
对于int
,您不能有小数位。
编辑:
string asd = "24000.000";
int dotPos = asd.LastIndexOf('.');
if (dotPos > -1) {
asd = asd.Substring(0, dotPos);
}
int num2;
if (int.TryParse(asd, out num2))
{
// It was assigned.
}
编辑:
正如其他答案所指出的,有更好的方法来处理转换。
答案 2 :(得分:3)
答案 3 :(得分:2)
这应该适合你:
string asd = "24000.0000";
int num2;
decimal tmpNum;
if (decimal.TryParse(asd, out tmpNum))
{
num2 = (int)tmpNum;
// It was assigned.
}
答案 4 :(得分:2)
您已要求它解析int
,但会给它double
或float
。由于它无法解析数字,因此它将返回false并将num2
设置为零。