2

私は通貨を構成する必要があるフィールドを持っています。これは、私の地域によると、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

しかし、それはまだ私にサインを与えます.プログラム$で変更する方法は?$

4

1 に答える 1

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)

ここで実際の動作を見ることができます

に慣れている場合はLINQPad、次を LINQPad に貼り付けて、ドル記号なしで適切な書式を確認できます。

String.Format(CultureInfo.GetCultureInfo("id-ID"), "{0:C2}", 10.05).Dump()
于 2013-05-28T02:33:37.647 に答える