int.TryParse not working

本文关键字:working not TryParse int | 更新日期: 2023-09-27 18:24:29

我的代码是这样的

string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{
    // It was assigned.
}

现在代码执行永远不会进入if case,这意味着try解析不起作用。有人能告诉我代码出了什么问题吗。

注意:在第一步中,值24000.0000被指定为字符串。

int.TryParse not working

使用第二个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.
}

编辑:

正如其他答案所指出的,有更好的方法来处理转换。

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

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

字符串只能包含空白、符号和数字。

这应该适用于您:

string asd = "24000.0000";
int num2;
decimal tmpNum;
if (decimal.TryParse(asd, out tmpNum))
{
    num2 = (int)tmpNum;
    // It was assigned.
}

您要求它解析int,但给了它doublefloat。由于它不能解析数字,它将返回false并将num2设置为零。