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

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

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

Я думал, что смогу сделать что-то подобное: .toString ("# 0.00")

2
perpetualbeta 14 Апр 2009 в 05:35

3 ответа

Лучший ответ

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

Dim dec As Decimal = 1.25D
dec.ToString(System.Globalization.CultureInfo.InvariantCulture);
//writes 1.25
0
Rex M 14 Апр 2009 в 05:40

Пытаться:

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

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

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

value.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))
2
Joel Coehoorn 14 Апр 2009 в 05:42

Этот

    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

2
dbasnett 14 Апр 2009 в 17:31