我的代碼是這樣的int.TryParse不工作
string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{
// It was assigned.
}
現在執行代碼永遠不會進入到若情況下,這意味着嘗試解析不工作。任何人都可以告訴我代碼有什麼問題。
注意:在第一步中將值24000.0000專門指定爲字符串。
我的代碼是這樣的int.TryParse不工作
string asd = "24000.0000";
int num2;
if (int.TryParse(asd, out num2))
{
// It was assigned.
}
現在執行代碼永遠不會進入到若情況下,這意味着嘗試解析不工作。任何人都可以告訴我代碼有什麼問題。
注意:在第一步中將值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.
}
編輯:
正如其他的答案中指出,有更好的方式來處理與轉換。
你能告訴我,我可以做些什麼來消除小數位,並使它成爲一個整數,這樣我就可以對它做一些數學計算。 – Athul
@AthulKSurendran:最簡單的解決方案是使用[this overload](http://msdn.microsoft.com/en-us/library/zf50za27.aspx):'if(int。TryParse(asd,NumberStyles.Number,null,out num2))' –
@ChrisSinclair Cool。我永遠不會記得所有這些轉換的重載。歡呼指出那傢伙:) –
這應該爲你工作:
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
設置爲零。
要問,爲什麼這個問題得到downvoted? –
什麼是您的系統上的int.MaxValue?你的文化背景是什麼,具體是什麼。您的文化設置中的小數分隔符還是另一個分隔符? – Dominik
@KaushalDeSilva - 沒有downvote,但可能是因爲簡單閱讀[Int32.TryParse](http://msdn.microsoft.com/library/f02979c7.aspx)將回答這個問題。 – Corak