Результат double.parse (str) отключен на порядки - PullRequest
0 голосов
/ 05 марта 2012

У меня странная проблема при преобразовании строки в double в .NET 3.5. Вот мой код:

   dbl = double.Parse(str);

Когда str является строкой с простым двойным числом, таким как "5.67", результат для dbl равен 567.0.

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Я полагаю, что это проблемы с локализацией, и вам нужно использовать перегрузку , которая указывает поставщика формата .

Возможно, проблема в том, что он ожидает , в качестве десятичного разделителя и . в качестве разделителя тысяч (и, следовательно, игнорирует его в действительности).

Пример воспроизведения возможной проблемы:

string input = "5.67";
Console.WriteLine(Double.Parse(input, new CultureInfo("en-gb")));
Console.WriteLine(Double.Parse(input, new CultureInfo("de-de")));

Это выводит:

5.67
567
0 голосов
/ 05 марта 2012

Я просто редактирую ответ Криса:

value = "5.67";
double out;
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
Console.WriteLine(Double.TryParse(value, style, culture, out number)?number:0);
...