2009-11-13 15 views

cevap

23

Decimal.TryParse işlevini kullanın.

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

Bu yalnızca herhangi bir sayı Ondalık olarak kabul edilebilirse çalışacaktır. Sayısal türler arasında ayrım yapmak gerekirse, ondalık türlerini de ondalık olarak kabul eder. –

+0

Bunu denedim, ancak ondalık nokta giremiyorum. – MissPiplup

+0

Ondalık formatı ve mevcut kültürü göz önünde bulundurmalısınız. Örneğin, en-Us 643.57 için doğru ondalık değer, bu yöntemle ru-RU kültüründe ayrışmaz. –

23

Decimal.TryParse değerini kullanarak, değerin Ondalık türüne dönüştürüp dönüştürülmediğini kontrol edebilirsiniz. Sonucu, Double türünde bir değişkene atarsanız, bunun yerine Double.TryParse'u da kullanabilirsiniz.

MSDN örnek:

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

bunu ayrıştırma deneyebilirsiniz:

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

Bu basit kod tamsayı veya ondalık değer sağlayacak ve alfabe ve sembolleri reddeder olacaktır.

 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 
      } 

     }