Вы можете частично проверить, что при выполнении этого кода на машине с этой локали (или путем применения его первым с Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
):
var nf = CultureInfo.CurrentCulture.NumberFormat;
Console.WriteLine("CurrencyPositivePattern: " + nf.CurrencyPositivePattern);
Console.WriteLine("CurrencyNegativePattern: " + nf.CurrencyNegativePattern);
Console.WriteLine("NegativeSign: " + nf.NegativeSign);
Console.WriteLine("CurrencySymbol: " + nf.CurrencySymbol);
Console.WriteLine("CurrencyDecimalDigits: " + nf.CurrencyDecimalDigits);
Console.WriteLine("CurrencyDecimalSeparator: " + nf.CurrencyDecimalSeparator);
Console.WriteLine("CurrencyGroupSeparator: " + nf.CurrencyGroupSeparator);
Console.WriteLine("CurrencyGroupSizes: " + string.Join(",", nf.CurrencyGroupSizes.Select(gs => gs.ToString())));
Обратите внимание на свойство размеров групп. На моей машине этот код:
Console.WriteLine((1232323d).ToString("C"));
Console.WriteLine((1232323d).ToString("£0.00"));
производит две разные строки из-за групп цифр.
Кроме того, как уже отмечали другие, и, как вы уже знаете, все равно - decimal
следует использовать вместо double
для валюты.
Я задавался вопросом, будет ли это иметь значение для отрицательных значений, но это не похоже на. Я надеюсь, что вы исправляете приложение, чтобы использовать 'decimal' вместо' double' для числовых значений, в то же время ... –
@JonSkeet Это делает разницу в контексте группировки цифр. – BartoszKP
@BartoszKP: Ах, верно - я не пробовал ни одного номера выше 1000. –