C #: когда NumberDecimalSeparator будет отличаться от CurrencyDecimalSeparator - PullRequest
1 голос
/ 14 февраля 2012

Мое приложение позволяет пользователю захватывать числовые значения. В контексте я не знаю, захватывают ли они валютную стоимость или какую-либо другую числовую сумму. Мне нужно обслуживать разные десятичные и групповые разделители, но что мне выбрать из CultureInfo?

Кто-нибудь знает, при каких обстоятельствах NumberDecimalSeparator и CurrencyDecimalSeparator могут отличаться?

1 Ответ

4 голосов
/ 14 февраля 2012

Это довольно легко проверить для предопределенных культур:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
        {
            var formatInfo = culture.NumberFormat;
            if (formatInfo.NumberDecimalSeparator != 
                formatInfo.CurrencyDecimalSeparator)
            {
                Console.WriteLine("{0}: {1} {2}",
                                  culture,
                                  formatInfo.NumberDecimalSeparator,
                                  formatInfo.CurrencyDecimalSeparator);
            }
        }
    }
}

Результаты на моей коробке:

et: , .
tg: , ;
fa: . /
kk: , -
ky: , -
tzm: , .
ps: , ?
prs: , .
et-EE: , .
tg-Cyrl-TJ: , ;
fa-IR: . /
kk-KZ: , -
ky-KG: , -
ps-AF: , ?
prs-AF: , .
tzm-Latn-DZ: , .
en-ZA: . ,
tg-Cyrl: , ;
tzm-Latn: , .
...