Из MSDN: «Параметр s интерпретируется с использованием стиля NumberStyles.Number. Это означает, что пробелы и разделители тысяч допускаются , а символы валюты - нет. Для явного определения элементов (например, символов валюты), разделители тысяч и пробелы), которые могут присутствовать в s, использовать либо метод Decimal.Parse (String, NumberStyles), либо метод Decimal.Parse (String, NumberStyles, IFormatProvider) . "
http://msdn.microsoft.com/en-us/library/cafs243z.aspx
edit: Чтобы уточнить, вам нужно либо
- явно установить культуру вашего приложения на тот, который НЕ позволяетПробел в числах или
- явно предоставляют параметр NumberStyles, который указывает, что пробел НЕ допускается
edit 2: Ответ Джона Скита верен.Например, следующее НЕ выдает исключение, потому что пробел используется в качестве разделителей тысяч в sv-SE:
Decimal.Parse(" 10 10 ", CultureInfo.GetCultureInfo("sv-SE").NumberFormat)
Следующее, однако, выдает исключение:
Decimal.Parse(" 10 10 ", CultureInfo.GetCultureInfo("en-US").NumberFormat)