Доброго времени суток всем! Недавно столкнулся с такой проблемой: необходимо разделить число типа float по разрядам, пример: "1590270,2018" -> "1 590 270,2018". Попытался решить задачу известными мне способами. Вышло нереально много строк кода. И вообще весь код - костыль. Деление по разрядам нужно только для вывода на экран, никакой логической роли это не играет. Язык программирования c#, среда разработка Visual Studio, под WPF. Вроде бы мелочь, а додуматься никак не могу, помогите решить задачу грамотным путём.
В качестве альтернативы, можно использовать стандартный формат N
:
float f = 1590270.2018f;
string s = f.ToString("N3", CultureInfo.GetCultureInfo("ru-RU"));
https://ideone.com/lhUMSJ
С другой стороны, если приложение запущено на нерусской системе, то логичнее показывать формат в соответствии с настройками системы. Тогда вы можете не указывать CultureInfo
:
string s = f.ToString("N3");
и строка будет отформатирована в соответствии с правилами языка, выбранного пользователем. Для русского и французского это будет 12 345 680,000
, для немецкого — 12.345.680,000
, для английского — 12,345,680.000
.
Заметьте, что для больших чисел у float
не хватает точности для показа нужного количества знаков после запятой.
Если вам нужно выводить все знаки после запятой, работать через N
нельзя, т. к. при этом количество знаков после запятой либо нужно указывать вручную (и тогда выведутся нули), либо берётся по умолчанию. В этом случае у меня сработало вот так:
string s = f.ToString("#,0.##########", CultureInfo.GetCultureInfo("ru-RU"));
или соответственно
string s = f.ToString("#,0.##########");
Используйте класс NumberFormatInfo:
var format = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
format.NumberGroupSeparator = " ";
Console.WriteLine(1590270.2018m.ToString("#,0.00", format));
Пример
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне нужна помощь с написанием скрипта, который будет проверять числовое значение в поле
Есть функция, отлично работает во всех браузерах кроме ieподскажите что не так