You could try:
decimal.Parse(numberText, System.Globalization.NumberStyles.Any)
EDIT:
This doesn't work for 0E+3 unfortunately
Works:
Console.WriteLine(decimal.Parse("0", System.Globalization.NumberStyles.Any));
Console.WriteLine(decimal.Parse("123.45", System.Globalization.NumberStyles.Any));
Console.WriteLine(decimal.Parse("1.35E+6", System.Globalization.NumberStyles.Any));
Console.WriteLine(decimal.Parse("1.54E-5", System.Globalization.NumberStyles.Any));
Doesn't work:
Console.WriteLine(decimal.Parse("0E+3", System.Globalization.NumberStyles.Any));
Is the problem number always 0E+3?
If so, you could write a helper method to handle this:
decimal ParseDecimal(string number)
{
if (number.Equals("0E+3", StringComparison.OrdinalIgnoreCase))
{
return 0;
}
return decimal.Parse(number, System.Globalization.NumberStyles.Any);
}