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被指定为字符串。
使用第二个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
,但给了它double
或float
。由于它不能解析数字,它将返回false并将num2
设置为零。