Decimal.toString () для любого региона, использующего VB.NET - PullRequest
2 голосов
/ 14 апреля 2009

У меня есть приложение, которое имеет дело с валютой. Для целей отображения я использую изящную функцию VB FormatCurrency, которая будет форматировать в зависимости от настроек региона ОС. Итак, если во Франции вы можете получить 123,45, тогда как в США вы получите 123,45.

Для расчета этих сумм я использую CDec () для преобразования в десятичное число.

Моя проблема в том, что когда я преобразую десятичную строку в строку, используя toString (), она форматирует в соответствии с заданной областью. Мне нужно иметь возможность всегда преобразовывать десятичное число в строковое представление для США, то есть с десятичными точками.

Я думал, что смогу сделать что-то похожее на это: .ToString ( "#") 0,00

Ответы [ 3 ]

2 голосов
/ 14 апреля 2009

Попробуйте:

value.ToString("C", CultureInfo.InvariantCulture)

Подробнее здесь:
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

"C" - форматировать валюту, но вы можете использовать множество строк различного формата. Если вы действительно хотите, чтобы он был отформатирован для «США», а не для инвариантной культуры, вы можете сделать это:

value.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))
2 голосов
/ 14 апреля 2009

Это

    Dim dec As Decimal = 1.25D
    Dim s As String
    s = dec.ToString("C2", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))

производит $ 1,25

Это

    s = dec.ToString("N2", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))

производит 1,25

0 голосов
/ 14 апреля 2009

Попробуйте передать InvariantCulture в свой метод ToString ():

Dim dec As Decimal = 1.25D
dec.ToString(System.Globalization.CultureInfo.InvariantCulture);
//writes 1.25
...