C # удваивает показ запятой вместо точки - PullRequest
10 голосов
/ 06 февраля 2009

У меня почти такая же проблема, как у парня в этой теме:

Конвертировать число с плавающей запятой вместо запятой?

Так что мой

double x = 234.4;
string y = x.ToString();

Я получаю y == "234,4";

Еще хуже ... Double.Parse("234.4") выдает исключение.

Я написал много кода, прежде чем меня попросили использовать точку вместо запятой, поэтому я предпочел бы иметь какой-то способ изменить мое CultureInfo на глобальном уровне .

Есть ли какие-то настройки в проектах, которые я могу сделать?

Я пробовал:

        Application.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

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

Есть идеи, как это решить?

Ответы [ 3 ]

10 голосов
/ 06 февраля 2009

Вы можете попробовать использовать

double.Parse("...", CultureInfo.InvariantCulture)

и

x.ToString(CultureInfo.InvariantCulture)

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

Надеюсь, это поможет.

5 голосов
/ 06 февраля 2009

Благодаря комментарию Флорина Сабауса я нашел решение, которое должно было быть размещено

        Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");

в Main () прямо перед тем, как я создал свою форму.

Теперь мне не нужно менять все мои .ToString () и Double.Parse () :-) Да!

1 голос
/ 06 февраля 2009

Попробуйте это решение: http://www.codeproject.com/KB/cs/Change_App_Culture.aspx

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