更改货币格式

时间:2013-05-28 02:19:36

标签: asp.net vb.net string currency

我有一个应该包含货币的字段,根据我所在的地区是印度尼西亚,即IDR或Rp。 我用这样的string.format构建它:

 Dim price As Single = Single.Parse(Convert.ToSingle(lblAmountGV.Text))
 lblAmount.Text = String.Format("{0,C}", price)

但它给了我一个美元符号。我改变代码:

 lblAmount.Text = String.Format("Rp{0}", price)

但我没有得到dot (.)Comma(,)。所以我使用FormatCurrency

再次更改代码
 lblAmount.Text = FormatCurrency(lblAmountGV.Text, , , TriState.True, TriState.True)

但它仍然给我一个美元符号,后来我发现如何更改CultureInfo

通过进口:

Imports System.Globalization

和我的代码:

 Dim culture = CultureInfo.GetCultureInfo(" id-ID")
    Dim format = DirectCast(culture.NumberFormat.Clone(), NumberFormatInfo)
    format.CurrencySymbol = "Rp."
    var number = Decimal.Parse(lblAmountGV.Text, NumberStyles.Currency, format);

lblAmount.Text = number

但它仍然给我一个$标志,如何以编程方式更改$

1 个答案:

答案 0 :(得分:3)

我发现你发布的内容有几个问题 -

此行不正确

String.Format("{0,C}", price)

您需要使用冒号来添加其他格式设置参数。如果要格式化带小数位的货币,则还需要指明小数位数。它应该是这样的

String.Format("{0:C2}", price)

此行有一个额外的空格,导致CultureNotFoundException

失败
CultureInfo.GetCultureInfo(" id-ID")

应该是

CultureInfo.GetCultureInfo("id-ID")

此代码对我有用:

Dim culture As CultureInfo = CultureInfo.GetCultureInfo("id-ID")
Dim price As Double = 10.05

Dim result As String = String.Format(culture, "{0:C2}", price)

您可以在行动here

中看到它

如果您熟悉LINQPad,可以将以下内容粘贴到LINQPad中,并查看没有美元符号的正确格式 -

String.Format(CultureInfo.GetCultureInfo("id-ID"), "{0:C2}", 10.05).Dump()