Я сделал приложение в ядре .net, которое принимает 2 десятичных значения в качестве аргументов. (Ядро 3.1)
Примере:
./MyApp 5.100 53.30
Это отлично работает в моей системе Windows при тестировании. Однако, когда я публикую его на своем сервере ubuntu, он не видит точек в моем десятичном значении.
Когда я печатаю значения после их передачи, приложение в Ubuntu видит их как: 5100 5330
вместо 5.100 53.30
.
Понятия не имею, что я сделал не так. Был бы признателен, если бы кто-нибудь знал ответ на этот вопрос!
Редактировать:
Я попытался преобразовать их с помощью этого:
decimal Lat = 0;
decimal.TryParse(args[1], out Lat)
Также пробовал конвертировать с помощью:
decimal Lat = 0;
Lat = Convert.ToDecimal(args[1])
Оба приводят к удалению точек
Точки удаляются только ПОСЛЕ парсинга. печать их перед синтаксическим анализом работает нормально.
1 ответ
В вашей системе ubuntu чаще всего есть настройка культуры, в которой нет десятичной точки в числах. Например, на английском это будет 5.10
, но на языках, таких как немецкий, это будет 5,10
, поэтому используйте перегрузку для TryParse
, которая принимает IFormatProvider
, чтобы использовать CultureInfo.InvariantCulture
для анализа строки.
Так что просто делай
decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.