2014-09-23 65 views
0

我需要找出用戶輸入到文本框的值。如何判斷用戶輸入的是整數還是雙精度或十進制

用戶可以在文本框中輸入整數,雙精度或十進制數。

我應該使用哪一個來驗證值?

Double.Parse(txtboxNo.text) 
int.Parse(txtboxNo.text); 
Decimal.Parse(txtboxNo.text) 

我想這(如果用戶輸入1或1.8,此功能仍然有效):

public bool IsNumeric(string strNbr) 
{ 
    Double d_Nbr; 

    try 
    { 
     d_Nbr = Double.Parse(strNbr); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 

我的問題: 我在移動應用程序的銷售工作。銷售人員有權改變價格。推銷員想要快速工作。所以,我需要檢測他是否輸入正確的價格(我的價格是十進制),如果他輸入:例如:1或1.0或23或333.0或按123456。我如何處理?

+3

你在做什麼值?問這是因爲這看起來不像是你會遇到的實際問題。另外,Double和Decimal的字符串表示有什麼區別? – Nenotlep 2014-09-23 06:45:00

+0

檢查框架的「is」關鍵字。 – 2014-09-23 06:47:13

+0

如果他們可以輸入一個小數,那麼'int.parse'會出錯,我個人會使用正確的'TryParse' – Sayse 2014-09-23 06:47:49

回答

-1

您可以使用*

double output; 
if(double.tryParse(txtboxNo.Text,output)) 
{ 
// it's double 
} 
else{// not double } 
+0

我認爲當你爲你的內涵添加一些解釋(例如:解釋tryParse()的工作方式)時,它會對op和更多的訪問者更有幫助。 – reporter 2014-09-29 12:14:48

+0

好的,我會那樣做>>>下次! – 2014-09-29 20:40:44

+0

我也不明白你爲什麼總是評價-1 -1! – 2014-09-29 20:41:39

1

一個int和一個雙/十進制之間Differentating並不多,你只需要測試它是否有一個小數點的問題。這個問題只有當你嘗試雙和小數既是之間differentate有小數點,唯一的區別是精度可以在這裏看到,一旦開始: Difference between decimal, float and double in .NET?

一種可能性,我可以看到的是,你試試看爲小數點,然後看看它是否有足夠的數字被看作是十進制而不是浮點數。 String textBoxValue = txtboxNo.Text.Replace(',','。');

if (textBoxValue.IndexOf(".") >= 0) 
{ 
    // double or decimal 
    if (textBoxValue.length >= 17) 
    { 
     // Possible decimal as too long for double 
     Decimal mydec; 
     if (Decimal.TryParse(textBoxValue , out mydec)) 
     { 
      // Is decimal 
     } 
     else 
     { 
      // Is something else 
     } 
    } 
    else 
    { 
     double mydoub; 
     if (Double.TryParse(textBoxValue, out mydoub)) 
     { 
      // Is double 
     } 
     else 
     { 
      // Is something else 
     } 
    } 
} 
else 
{ 
    int myInt; 
    // possible int 
    if (int.TryParse(textBoxValue, out myInt)) 
    { 
     // its an int 
    } 
    else 
    { 
     // something else 
    } 
} 
+0

'if(double.TryParse(「1」,out dvalue))== true)'??? – Steve 2014-09-23 06:55:44

+0

@Steve - 好點,但IndexOf小數點會阻止這種情況發生在這裏 – Sayse 2014-09-23 06:57:39

+0

啊忽略了史蒂夫在那裏意味着什麼。葉普這就是爲什麼我把索引的第一個,然後在雙精度和小數之間進行區分以避免這個問題 – Thomas 2014-09-23 06:58:35

相關問題