2009-11-13 7 views

Odpowiedz

23

pomocą funkcji Decimal.TryParse.

decimal value; 
if(Decimal.TryParse(strOrderId, out value)) 
    // It's a decimal 
else 
    // No it's not. 
+1

Działa to tylko wtedy, gdy dowolną liczbę można uznać za dziesiętny. Jeśli chcesz rozróżnić typy liczbowe, uwzględni to również typy całkowite jako wartości dziesiętne. –

+0

Próbowałem tego, ale nie mogę wprowadzić kropki dziesiętnej. – MissPiplup

+0

Powinieneś rozważyć format dziesiętny i aktualną kulturę. Na przykład, poprawna wartość dziesiętna dla en-Us 643.57 nie analizuje w kulturze RU-RU tą metodą. –

23

Można użyć wartości Decimal.TryParse, aby sprawdzić, czy wartość można przekonwertować na typ dziesiętny. Można także użyć wartości Double.TryParse, jeśli przypiszesz wynik do zmiennej typu Double.

MSDN przykład:

string value = "1,643.57"; 
decimal number; 
if (Decimal.TryParse(value, out number)) 
    Console.WriteLine(number); 
else 
    Console.WriteLine("Unable to parse '{0}'.", value); 
3
decimal decValue; 

if (decimal .TryParse(strOrderID, out decValue) 
{/*this is a decimal */ } 
else 
{ /* not a decimal */} 
2

można spróbować parsowania go:

string value = "123"; 
decimal result; 
if (decimal.TryParse(value, out result)) 
{ 
    // the value was decimal 
    Console.WriteLine(result); 
} 
0

Ten prosty kod pozwoli całkowitą lub wartość dziesiętną i odrzuca liter i symboli.

 foreach (char ch in strOrderId) 
     { 
      if (!char.IsDigit(ch) && ch != '.') 
      { 

       MessageBox.Show("This is not a decimal \n"); 
       return; 
      } 
      else 
      { 
      //this is a decimal value 
      } 

     } 
Powiązane problemy