В нашей системе есть код для форматирования чисел и валюты в соответствии с региональными настройками, выбранными пользователем. Один из наших пользователей выбрал en-ZA и заметил, что группировка цифр и десятичные разделители изменились с переходом на .NET 4.0.
Я написал фрагмент кода, чтобы проиллюстрировать это изменение:
using System;
namespace regional
{
class Program
{
static void Main(string[] args)
{
var ci = new System.Globalization.CultureInfo("en-ZA");
var output = 1234567.00m.ToString("c", ci);
Console.WriteLine(output);
}
}
}
В .NET 3.5 мы получаем вывод, который выглядит следующим образом:
R 1,234,567.00
В .NET 4.0 мы получаем вывод, который выглядит следующим образом:
R 1 234 567,00
Что объясняет изменение в десятичном разделителе и группировке цифр между .NET 3.5 и .NET 4.0?
Согласно Википедии, «когда Южная Африка приняла метрическую систему, она приняла запятую в качестве десятичного разделителя». Это подразумевает, что этот параметр изменился в какой-то момент, но я до сих пор не понимаю, почему поведение отличается в разных версиях платформы.