7

我的代码是这样的

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

    // It was assigned.
}

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

注意:在第一步中,值 24000.0000 被故意分配为 string 。

4

5 回答 5

10

使用TryParse允许您指定NumberStyle参数以允许小数的第二个重载。

int val =0;
var parsed = int.TryParse("24000.0000", 
                NumberStyles.Number, 
                CultureInfo.CurrentCulture.NumberFormat, 
                out val);
于 2013-07-22T13:37:37.680 回答
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.
}

编辑:

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

于 2013-07-22T13:30:36.797 回答
3

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

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

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

于 2013-07-22T13:33:23.620 回答
2

这应该适合你:

string asd = "24000.0000";
int num2;
decimal tmpNum;
if (decimal.TryParse(asd, out tmpNum))
{
    num2 = (int)tmpNum;
    // It was assigned.
}
于 2013-07-22T13:33:15.373 回答
2

你已经要求它解析 anint但给它一个doubleor float。由于它无法解析数字,它将返回 false 并设置num2为零。

于 2013-07-22T13:33:43.027 回答