Этот код: Console.Out.WriteLine(string.Format(CultureInfo.GetCultureInfo("hu-HU"), "{0:C}", 1234.56M))
произведет следующий результат: 1 234,56 Ft, что является технически корректным, но как это получается, чтобы угадать валюту?Почему в формате валюты .NET есть символ валюты?
Это поведение означает, что простое изменение культуры отображения от hu-HU до en-US умножит значение с более чем 200, в зависимости от текущих ставок. Вы бы никогда не допустили ошибку при выставлении счета 500 HUF в размере 500 долларов США. Очевидный.
только «хороший» способ установки валюты клонируется нужную культуру и устанавливая символ валюты:
var format = NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo("en-US")).Clone() as NumberFormatInfo;
format.CurrencySymbol = "asd";
Console.Out.WriteLine(string.Format(format, "{0:C}", 1234.56M));
Это работает правильно производить asd1,234.56
, но настолько громоздки.
Мои вопросы:
- Что такое отношение за недобросовестный к национальной валюте в этом глобальном мире мы жили в течение десятилетий?
- Почему нет способа указать сумму и валюту в более родственной форме, так как они так связаны?
- Бонус: если я использую sk-SK для культуры, я получаю евро за «дефолтную» валюту. Если я перейду на Framework 2.0, я должен получить
Sk
(для словацкой короны), так как в 2005 году это была национальная валюта. (Ну, это не произойдет, но я не пробовал его на любой системе, которая не имеет не позднее, чем 2,0..)
UPDATE: Выводы:
- Дефолт валюты от культуры это все нормально для некоторых, странно для других (включая меня)
- Нет типа денег, поскольку нет типов для длины, веса и т. д., где предел? Virtlink создал для этого библиотека: M42 Financial
Он отображает его, потому что вы его попросили. Просто используйте другой спецификатор формата, если вы этого не хотите. Как «N2». –
Вы вводите в заблуждение форматирование с данными. Если вы выставили счет за неправильный обменный курс или неправильную валюту, которая не является проблемой форматирования. – Paparazzi
Хотя это один из «неконструктивных» вопросов в соответствии с правилами stackoverflow, это очень интересный вопрос. –