C # удваивает значение запятой вместо точки
-
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