-1
I have changed Global Application Culture thread for currency number format in (fr-CA) as shown below. 

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyPositivePattern = 1; 
           Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencyNegativePattern = 5; 

          CultureInfo CADCultureref = new CultureInfo("fr-CA"); 
          CADCultureref = Thread.CurrentThread.CurrentCulture; 
          NumberFormatInfo CADNumFormatref = new NumberFormatInfo(); 
          CADNumFormatref = Thread.CurrentThread.CurrentCulture.NumberFormat; 

          CADNumFormatref.CurrencyGroupSeparator = "."; 
          CADNumFormatref.CurrencyDecimalSeparator = ","; 
          CADCultureref.NumberFormat = CADNumFormatref; 
          Thread.CurrentThread.CurrentCulture = CADCultureref; 
          Thread.CurrentThread.CurrentUICulture = CADCultureref; 

Тогда я пытаюсь разбор значения от валюты, как показано ниже:Десятичных Анализировать бросаешь исключение после изменения NumberFormat Seperator в Глобальной теме

Decimal digit = 1000000; 
String currency = digit.ToString("C"); // 1.000.000,00$ (fr-CAD) 
decimal parseValue = decimal.Parse(currency , System.Globalization.NumberStyles.Currency | System.Globalization.NumberStyles.Number); 

я получаю исключение «{Строка ввода не в правильном формате } "во время разбора значения.

Невозможно разобрать из-за изменения в разделителе групп и десятичном разделителе в Numberformatinfo CurrentThread.

Мне нужно показать «,» вместо «.». а также "." на месте ",".

+3

Где этот код пришел? Если вы поместите код в свой вопрос, поставьте фактический код, который компилируется. – ken2k

+0

Я обновил код ... –

+0

Я не знаю, на каком языке это, но, конечно же, не C#. – ken2k

ответ

1

Неясные чем ваша проблема, но это, как правило, лучше явно передавать информацию культуры/формат чисел в форматирования и синтаксический анализ функции, такие как:

var numberFormat = new CultureInfo("en-US", false).NumberFormat; 
numberFormat.CurrencyDecimalSeparator = ","; 
numberFormat.CurrencyGroupSeparator = "."; 
Console.WriteLine(400000.ToString("C", numberFormat)); // Output: $ 4.000,00 
Console.WriteLine(
    decimal.Parse(400000.ToString("C", numberFormat), 
      NumberStyles.Currency | NumberStyles.Number, 
      numberFormat));