Определение десятичных чисел в другой операционной системе, как понять, используется ли точка или запятая в C # - PullRequest
1 голос
/ 15 апреля 2010

Я написал небольшую программу, в которой программа работает по-разному в разных операционных системах (xp, win7). Проблема в том, что программа читает некоторые числа с плавающей запятой, такие как 2686.

Одна операционная система (win7) преобразует его в значение с плавающей точкой true, но на xp он идет не так и печатает его 2686. Как понять, какой символ операционная система использует для десятичных чисел?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 15 апреля 2010
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
2 голосов
/ 15 апреля 2010

Это зависит не от операционной системы, а от языковых настроек (по умолчанию) на каждом ПК.

Если вы используете: double value = double.Parse(text);, вы используете ту культуру, которую настроил пользователь. Если вы знаете, что ввод в определенном формате, используйте:

var ci = CultureInfo.GetCulture("nl-NL");  // dutch
double value = double.Parse(text, ci);

Каждая конвертируемая функция имеет (1 или более) перегрузок для получения FormattingProvider (Culture).

1 голос
/ 15 апреля 2010

Десятичный разделитель определяется текущей культурой.

Если вы хотите использовать определенный символ в качестве десятичного разделителя, вы можете создать пользовательский объект NumberFormatInfo с любым разделителем, который вам нравится. Если вы хотите использовать точку в качестве разделителя deimcal, вы можете просто использовать InvariantCulture:

double n = Double.Parse(s, CultureInfo.InvariantCulture);

Если вы хотите использовать запятую, вы можете выбрать такую ​​культуру, например, шведскую:

double n = Double.Parse(s, CultureInfo.GetCultureInfo("sv-SE"));
1 голос
/ 15 апреля 2010

анализ чисел с плавающей запятой, используя текущую культуру пользователя, с помощью double.Parse (string, System.Globalization.CultureInfo.CurrentCulture);

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