Как избежать локализации при форматировании чисел, записанных в файл - PullRequest
0 голосов
/ 20 января 2010

У меня есть программа, которая иногда используется в локалях, которые используют запятую для десятичного разделителя. Приятно, что C # обрабатывает все это (хорошо для пользовательского интерфейса), но когда я экспортирую в файл, мне нужно всегда использовать «.», А не конкретный номер локали. В настоящее время я делаю:

String.Format ("{0: 0. ####}, {1: 0. ####}", x, y)

Проблема в том, что в некоторых локалях в конечном итоге используются запятые вместо точек. Вопрос в том, существует ли код формата, который говорит: «всегда использовать период», или это единственное решение, которое можно связать с локалью?

Ответы [ 2 ]

7 голосов
/ 20 января 2010

Просто используйте:

String.Format(CultureInfo.InvariantCulture, "{0:0.####},{1:0.####}", x, y)
1 голос
/ 20 января 2010

Я бы порекомендовал попробовать FxCop (или функцию анализа кода в вариантах Team для VS2005 +). Он генерирует много шума (ложных срабатываний), но дает много хорошей практики.

Включая: всегда используйте перегрузку, которая принимает параметр IFormatProvider, если он доступен - обычно вы используете CultureInfo.CurrentCulture для форматирования вывода для пользователя и CultureInfo.InvariantCulture для хранения данных в файлах, реестре и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...