Я сделал приложение в ядре .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])

Оба приводят к удалению точек

Точки удаляются только ПОСЛЕ парсинга. печать их перед синтаксическим анализом работает нормально.

0
sasa 16 Апр 2020 в 15:05

1 ответ

Лучший ответ

В вашей системе ubuntu чаще всего есть настройка культуры, в которой нет десятичной точки в числах. Например, на английском это будет 5.10, но на языках, таких как немецкий, это будет 5,10, поэтому используйте перегрузку для TryParse, которая принимает IFormatProvider, чтобы использовать CultureInfo.InvariantCulture для анализа строки.

Так что просто делай

decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);
1
Ackdari 16 Апр 2020 в 12:34