我的代码是这样的
string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{
// It was assigned.
}
现在代码执行永远不会进入 if case,这意味着 try parse 不起作用。谁能告诉我代码有什么问题。
注意:在第一步中,值 24000.0000 被故意分配为 string 。
使用TryParse
允许您指定NumberStyle
参数以允许小数的第二个重载。
int val =0;
var parsed = int.TryParse("24000.0000",
NumberStyles.Number,
CultureInfo.CurrentCulture.NumberFormat,
out val);
对于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.
}
编辑:
正如其他答案所指出的,有更好的方法来处理转换。
这应该适合你:
string asd = "24000.0000";
int num2;
decimal tmpNum;
if (decimal.TryParse(asd, out tmpNum))
{
num2 = (int)tmpNum;
// It was assigned.
}
你已经要求它解析 anint
但给它一个double
or float
。由于它无法解析数字,它将返回 false 并设置num2
为零。