. NET Ошибка десятичного аргумента ядра в терминале Ubuntu - PullRequest
0 голосов
/ 16 апреля 2020

Я сделал заявление в. net ядре, которое принимает 2 десятичных значения в качестве аргументов. (3.1 ядро)

Пример:

./MyApp 5.100 53.30 

Это отлично работает на моей системе Windows при тестировании. Однако, когда я публикую sh на моем сервере Ubuntu, он не видит точек в моем десятичном значении.

Когда я печатаю значения после их выдачи, приложение в Ubuntu видит их как: 5100 5330 вместо 5.100 53.30.

Понятия не имею, что я сделал не так. Был бы признателен, если кто-то знает ответ на это!

edit:

Я пытался преобразовать их следующим образом:

decimal Lat = 0;
decimal.TryParse(args[1], out Lat)

Также попытался преобразовать с помощью:

decimal Lat = 0;
Lat = Convert.ToDecimal(args[1])

оба результата в удаляемые точки

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

1 Ответ

1 голос
/ 16 апреля 2020

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

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

decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...