Культурное форматирование строки для десятичного числа - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть десятичное значение, которое хранится в моей базе данных (SQL Server 2008) с точностью до 13 и шкалой 10.

Примеры:

10.6157894734
68.0750000000
96.8723684210

В основном, числа представляют «счет» из 100.

Теперь я хочу отобразить / представить это значение по-разному, в зависимости от культуры.

Например, в АС, я хочу отобразить значение из 100, округленное до 2 десятичных знаков.

Итак, в приведенном выше примере:

10.62
68.08
96.87

Но в США я хочу вывести значение изот 10, округляется до 1 знака после запятой.Таким образом, в приведенном выше примере:

1.1
6.8
9.7

Можно ли это сделать с помощью файла ресурсов, например, сделать что-то вроде:

return score.ToString(Resources.Global.ScoreFormat);

Где его можно сохранить как "#. ## " в en-US, но " #. # " в en-AU?

Я почти уверен, что не может, так как я нетолько округление, но преобразование с использованием математики?(например, значение / 10 для AU) Но я подумал, что задам вопрос.

Я пытаюсь избежать уродливого оператора if, который проверяет текущую культуру и выполняет математику / округление вручную.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Вам нужно будет добавить модификатор и строку формата в ваши ресурсы, чтобы вы могли сделать что-то вроде

return (score * Resources.Global.ScoreModifier).ToString(Resources.Global.ScoreFormat);
1 голос
/ 02 апреля 2012

Принятие ответа Фила, но это фактический модификатор / формат для всех, кому небезразлично:

Код:

var formattedScore = (score / Convert.ToInt32(Global.ScoreModifier)).ToString(Global.ScoreFormat))

Global.resx

ScoreFormat     n1  
ScoreModifier   10  

Global.en-au.resx

ScoreFormat     n2  
ScoreModifier   1   

Кажется, работает .. кто-нибудь обнаружил проблему?

...