Попробуйте использовать Decimal.TryParse()
Посмотрите, поможет ли это вам.
Вот MSDN
Это должно работать:
var s = "123.34";
decimal d;
bool isDec = Decimal.TryParse(s, out d);
if (isDec)
Console.WriteLine("It was a decimal: " + d);
else
Console.WriteLine("Not a decimal!");
Console.WriteLine(isDec);
Console.ReadLine();
Причина, по которой вам нужны два параметра, заключается в том, что первый параметр - это представление десятичного числа в строковом формате. Если TryParse завершается успешно, результат сохраняется в d
(в приведенном выше примере). В этом примере isDec
печатает true
.