У меня есть следующий код:Как выбрать правильный CultureInfo, так что десятичное всегда прав
object obj=GetParameterValue('PARAM1');//
decimal value=Convert.ToDecimal(obj);
Метод GetparameterValue возвращает объект. Предположим, что значение объекта 1268.08. Когда я развертываю свое приложение на своей собственной машине IIS, это значение правильно. Но если бы я попробовать его на другой IIS, где региональные настройки является русский я 126808. Если я заменить вторую строку кода с приведенной ниже число возвращается право:
decimal value=Convert.ToDecimal(obj,new CultureInfo("ru-RU"));
Но я не хочу, чтобы придерживаться русской культуры. Я попробовал InvariantCulture, но это не сработало, у меня все еще было 126808 вместо 1268.08. Что мне делать в этом случае?
1.Should настроить машину, на которой я собираюсь развернуть приложение для моего кода
2.Should Я пишу код для какой-то конкретной культуры? (Что не сильно отличается от первого случая)
3.Если ни один из них не прав, есть ли лучший, универсальный способ?
Вы хотите, чтобы десятичный формат всегда был таким же? Затем используйте, как вы, с одним выбранным языком, например en_US. Не вижу проблемы здесь. Также я думаю, что лучше понять, что обе конфигурации IIS совместимы друг с другом. –
Проблема не в формате десятичной дроби. Проблема в том, что при выборе разных локалей Convert.ToDecimal() возвращает два разных номера, например 126880 и 1268.80. Чтобы быть более ясным, один из чисел составляет сто двадцать шесть тысяч восемьсот восемьдесят, а другой - тысяча двести шестьдесят восемь восемь. –