Подтвердить что ты не робот

Лучшая практика - форматирование нескольких валют

Какова наилучшая практика для приведенного ниже сценария?

У нас есть приложение, которое мы хотели бы поддерживать несколькими валютами. Программное обеспечение будет уважать локали пользователей и региональные настройки, чтобы диктовать правильный формат номера, то есть 10 000,00 долларов США или 10.000,00 ₴ и т.д.

Однако мы хотели бы иметь возможность форматировать разные номера на основе идентификатора валюты (возможно, трех буквенного кода ISO4217). Наша идея состоит в том, чтобы хранить таблицу в базе данных с каждой валютой, а затем запрашивать у пользователя выбор символа валюты, который будет использоваться. Затем программа будет форматировать все номера в соответствии с настройкой языка/региона, но будет использовать символ валюты, как определено в нашей программе.

Итак, учитывая следующие значения и валюты
10000 AUD
5989.34 USD
450 EUR

программа выведет
$ 10,000.00
$ 5,989.34
€ 450,00

или с региональным параметром, который формировал числа как #####, ## $, будет результат:
10000,00 $
5989,34 $
450,00 €

Соблюдение форматирования номера языка/региона, но отображающее разные валюты, что лучше всего подходит для этого?

Надеюсь, это имеет смысл.

Используемая технология - С#.NET 2.0.

4b9b3361

Ответ 2

Похоже, у вас есть дескриптор лучших практик для форматирования данных. Если бы я был вами, я бы меньше беспокоился о техническом стандарте, но больше сосредоточился на том, к чему привыкли ваши пользователи.

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

Кроме того, если ваше требование состоит в отображении любой валюты в любой, ISO4217 это ваш лучший выбор. Это то, что показано в магазинах обмена валюты по всему миру, на валютных биржах, счетах и ​​т.д. В противном случае отображение символов валюты может быть довольно запутанным для некоторых пользователей, и сам символ не указывает, какая валюта действительно на самом деле.

Я бы также упомянул следующие SO-вопросы. Не все из них напрямую связаны с вашей проблемой, но у них очень хорошие мета-дискуссии о проблемах, связанных с поддержкой нескольких валют.

Ответ 3

Вместо сохранения только символа валюты вы можете сохранить строку культуры для каждого кода валюты, поэтому AUD → en-AU

CultureInfo ci = new CultureInfo("en-AU");
currencyValue.ToString( "c", ci );

Я не уверен, насколько гибкость существует при форматировании.

Не уверен, что это помогает:

Форматирование числовых данных для конкретной культуры

Ответ 5

Я столкнулся с подобной ситуацией. Я нашел способ, не знаю, насколько он будет полезен для вас. Но он решил мои проблемы. Я установил строку сеанса для каждого места, такого как Session [ "cur" ] = "0.000" или "0.00" для каждой аутентификации входа. И где когда-либо была валюта в системе, я использовал .ToString [Session [ "cur" ]. ToString()] для переменных модели. Он помогло. Надеюсь, он вам тоже поможет.