int.TryParse无法正常工作

时间:2013-07-22 13:29:26

标签: c# asp.net

我的代码就像这样

string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{

    // It was assigned.
}

现在代码执行从不进入if case,这意味着try parse无效。谁能告诉我代码有什么问题。

注意:第一步有意将值24000.0000指定为字符串。

5 个答案:

答案 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)

请参阅有关此方法的MSDN文档的备注部分:

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

字符串只能包含空格,符号和数字。

答案 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,但会给它doublefloat。由于它无法解析数字,因此它将返回false并将num2设置为零。