Конвертировать объект в одиночный. КультураИнфо проблемы - PullRequest
0 голосов
/ 20 июля 2011

Итак, у меня есть следующая строка кода:

Single xFreq = Convert.ToSingle(param, CultureInfo.InvariantCulture);

Переменная param является System.Object. По какой-либо причине результат будет разным, если вместо «.» Используется разделитель «,»? Например, 0,45 конвертируется правильно, но 0,45 конвертируется в 45 ... Эта штука продолжает беспокоить меня в течение последнего часа ...

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Не уверен, что ваш вопрос, так как вы явно указали InvariantCulture для анализа значения строки - следовательно, "."используется в качестве разделителя.

Вам необходимо указать CultureInfo, соответствующий вашему вводу.Как правило, для анализа ввода пользователя вам нужно использовать текущую культуруЕсли информация поступает из какого-то другого источника, вы должны знать, с какой культурой она была сериализована.

1 голос
/ 21 июля 2011

Поскольку десятичный разделитель зависит от культуры, как пояснили другие посты, для InvariantCulture это "." (CultureInfo.InvariantCulture.NumberFormat). Вы можете посмотреть статью NumberFormatInfo для более подробной информации о других разделителях для числовых типов.

0 голосов
/ 20 июля 2011

Инвариантная культура преобразуется из и в "."как разделитель.Вместо этого строка, из которой вы конвертируете, не находится в формате ариантной культуры, вам нужно указать культуру строки.

В этом случае основной метод может быть хранить в инвариантной культуре, но показывать пользователю, что он хочет как разделитель, так что вы избавитесь от любой проблемы, зависящей от культуры, и пользователь будет рад увидеть, что ему нравитсячтобы увидеть.

С уважением.

...