2013-07-09 1 views
1

У меня есть следующий код:Как выбрать правильный 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.Если ни один из них не прав, есть ли лучший, универсальный способ?

+0

Вы хотите, чтобы десятичный формат всегда был таким же? Затем используйте, как вы, с одним выбранным языком, например en_US. Не вижу проблемы здесь. Также я думаю, что лучше понять, что обе конфигурации IIS совместимы друг с другом. –

+0

Проблема не в формате десятичной дроби. Проблема в том, что при выборе разных локалей Convert.ToDecimal() возвращает два разных номера, например 126880 и 1268.80. Чтобы быть более ясным, один из чисел составляет сто двадцать шесть тысяч восемьсот восемьдесят, а другой - тысяча двести шестьдесят восемь восемь. –

ответ

0

Использование

CultureInfo.CurrentCulture 

Это лучший универсальный способ сделать это.