C # удваивает значение запятой вместо точки

StackOverflow https://stackoverflow.com/questions/518625

  •  21-08-2019
  •  | 
  •  

Вопрос

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

Преобразовать число с плавающей точкой вместо запятой?

Так что мой

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");

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

Есть какие-нибудь идеи о том, как это решить?

Это было полезно?

Решение 2

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

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

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

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

Другие советы

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

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

и

x.ToString(CultureInfo.InvariantCulture)

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top