Номер денежного формата VB.NET - PullRequest
4 голосов
/ 13 февраля 2012

Я пытаюсь преобразовать математический результат, например, в денежный формат:

Dim num1 As Integer = 2000
Dim num2 As Integer = 500

msgbox(cDbl(num1 + num2))

Возвращается только 2500, и мне нужно вернуть свои 2500.00, если кто-нибудь знает, как я буду очень полезен, спасибо.

Ответы [ 7 ]

7 голосов
/ 13 февраля 2012

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

Во-вторых, вы можете использовать форматирование строки :

Dim num1 As Integer = 2000
Dim num2 As Integer = 500
Diml value As Decimal = CDec(num1 + num2)
Dim formattedValue As String = String.Format("{0:n}", value)

msgbox(formattedValue)
6 голосов
/ 13 февраля 2012

Ваше MsgBox показывает вам значение, но оно не отформатировало его, как вы его не просили.

Если вы пошли немного дальше и отформатировали результат какстрока , вы получите желаемый формат, например:

Dim num1 As Double = 2000
Dim num2 As Double = 500
Dim sum As Double = num1 + num2

MsgBox(sum.ToString("0.00")) ' Adjust format string to suit
3 голосов
/ 13 февраля 2012

Строка стандартного числового формата

- отличный ресурс для общего форматирования чисел, верхний - валюта (с учетом различий в культуре)

"C"или "c" для валюты

  • Поддерживается: всеми числовыми типами.
  • Спецификатор точности: Количество десятичных цифр.
  • Спецификатор точности по умолчанию: определяется системой.Globalization.NumberFormatInfo.

Дополнительная информация: спецификатор формата валюты ("C").

  • 123.456 ("C", en-US) -> 123,46
  • 123,456 ("C", FR-FR) -> 123,46 €
  • 123,456 ("C", ja-JP) -> ¥ 123
  • -123,456 ("C3 ", en-US) -> ($ 123,456)
  • -123,456 (" C3 ", FR-FR) -> -123,456 €
  • -123,456 (" C3 ", JA-JP) -> - ¥ 123.456
1 голос
/ 13 февраля 2012

Если вы хотите, чтобы формат был валютой, любой из них будет работать:

    Dim num1 As Integer = 2000
    Dim num2 As Integer = 500
    MsgBox(String.Format("{0:C2}", num1 + num2))

Или

    Dim num1 As Integer = 2000
    Dim num2 As Integer = 500
    Dim sum As Integer = num1 + num2

    MsgBox(sum.ToString("C2"))
0 голосов
/ 20 декабря 2012

формат валюты для удвоения

value = 1500,20 TL

ctype(value, double)

return 1500,20

двойная к формату валюта

образец

value = 1500,1995

formatcurrency(value,2)

return = 1500,20 TL moneysembol (TL , $ ,vs..)
0 голосов
/ 13 февраля 2012

Обычно вы не используете Integer в качестве типа данных для валютных значений. Вместо этого используйте Double.

Я уверен, что есть много способов отформатировать выходную строку как значение валюты.

Во-первых, если методы, которые я знаю, уже были объяснены Роуландом Шоу. Поэтому я перейду к другому. Это встроенная функция с именем FormatCurrency. Он выведет строку в виде значения валюты плюс с символом валюты, определенным в вашей системе.

Dim num1 As Double = 2000
Dim num2 As Double = 500
Dim ans As Double = num1 + num2

MessageBox.Show(FormatCurrency(ans))

Подробнее о FormatCurrency, смотрите здесь .

0 голосов
/ 13 февраля 2012

Взгляните на документацию String.Format, там вы найдете то, что вам нужно.

...