Проблемы System.Convert.ToSingle (), (1,5) против (1,5) - PullRequest
2 голосов
/ 19 сентября 2010

Я пишу программу на C # для конвертации между форматами моделей.Формат модели имеет числа в виде текста, такие как «-0.136222».

Я могу использовать System.Convert.ToSingle () для преобразования этого числа в число с плавающей запятой.Но здесь, в Германии, мы используем запятые в качестве десятичных точек (-0,136222), и System.Convert подхватывает это.Теперь у меня проблема в том, что он не распознает десятичные точки, поскольку он ожидает запятые.

В двух словах;У нас есть это: "-0.136222" Мы получаем это: -0136222.0f, поскольку оно ожидает этого: "-0,136222"

Могу ли я сказать системе распознавать запятые как десятичные точки только для моей программы?Обходной путь не будет работать, поскольку он должен быть переносимым (в другие страны).

Ответы [ 2 ]

2 голосов
/ 19 сентября 2010

Вместо этого используйте Single.Parse (), например, так:

Single.Parse("-0.136222", CultureInfo.InvariantCulture);

InvariantCulture - это способ сообщить методу для анализа строки, игнорируя разделительные знаки, специфичные для локали.

0 голосов
/ 19 сентября 2010

Оставьте все как есть. .Net Framework, установленный на компьютерах ваших клиентов, автоматически выберет правильный способ анализа данных для настроек страны, для которых установлен компьютер , Так, например, в континентальной Европе он будет анализировать ваши float с помощью запятых, но в США, Великобритании и других странах, где мы используем десятичные точки, он будет анализировать данные с использованием десятичных точек.

Конечно, вы можете переопределить эту Culture -специфическую функцию локализации .Net, используя CultureInfo.InvariantCulture (как предложил Павел) или любую другую CultureInfo, но это будет означать, что вы должны установить ее специально для каждой страны Вы продаете свое программное обеспечение. Гораздо лучше, если фреймворк сделает всю работу за вас:)


Примечание: Это также будет означать, что (скажем) немецкому человеку, работающему в США с его ПК, который должен быть локализован для Германии, будут проанализированы его запятые, как он и ожидал не с десятичными точками только потому, что он находится в США.

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