Вы можете попробовать:
decimal.Parse(numberText, System.Globalization.NumberStyles.Any)
EDIT:
К сожалению, это не работает для 0E + 3
Работает:
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));
Не работает:
Console.WriteLine(decimal.Parse("0E+3", System.Globalization.NumberStyles.Any));
Номер проблемы всегда 0E + 3?
Если это так, вы можете написать вспомогательный метод для обработки этого:
decimal ParseDecimal(string number)
{
if (number.Equals("0E+3", StringComparison.OrdinalIgnoreCase))
{
return 0;
}
return decimal.Parse(number, System.Globalization.NumberStyles.Any);
}