【发布时间】:2012-02-13 17:54:11
【问题描述】:
我正在尝试转换货币格式示例的数学结果:
Dim num1 As Integer = 2000
Dim num2 As Integer = 500
msgbox(cDbl(num1 + num2))
它只返回 2500,我需要返回我的 2,500.00 如果有人知道我将如何提供帮助,谢谢。
【问题讨论】:
标签: vb.net double money-format
我正在尝试转换货币格式示例的数学结果:
Dim num1 As Integer = 2000
Dim num2 As Integer = 500
msgbox(cDbl(num1 + num2))
它只返回 2500,我需要返回我的 2,500.00 如果有人知道我将如何提供帮助,谢谢。
【问题讨论】:
标签: vb.net double money-format
首先,在处理货币值时,您应该使用Decimal 而不是Double。 Double 有一些舍入问题。
其次,可以使用string formatting:
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)
【讨论】:
您的 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
【讨论】:
Standard Numeric Format String
是通用数字格式的绝佳资源,最重要的是货币(考虑到文化差异)
“C”或“c”表示货币
更多信息:货币(“C”)格式说明符。
【讨论】:
如果您希望格式为货币,则以下任何一种都可以:
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"))
【讨论】:
格式货币翻倍
value = 1500,20 TL
ctype(value, double)
return 1500,20
双倍格式化货币
样本
value = 1500,1995
formatcurrency(value,2)
return = 1500,20 TL moneysembol (TL , $ ,vs..)
【讨论】:
Dim num1 As Decimal = 20
Dim num2 As Decimal = 34
Dim ans As Decimal
ans = num1 + num2
MsgBox(ans.ToString("c"))
【讨论】:
查看 String.Format 文档,您会在其中找到所需的内容。
【讨论】:
您通常不使用Integer 作为货币值的数据类型。请改用Double。
我确信有很多方法可以将输出字符串格式化为货币值。
如果我知道的方法已经被 Rowland Shaw 解释过。所以我会跳到另一个。它是名为FormatCurrency 的内置函数。它会将字符串输出为货币值加,并带有您系统中定义的货币符号。
Dim num1 As Double = 2000
Dim num2 As Double = 500
Dim ans As Double = num1 + num2
MessageBox.Show(FormatCurrency(ans))
更多关于FormatCurrency的详情,请看here。
【讨论】: