0

C# では、コンピューターの設定に従って金額をフォーマットしようとしています。

たとえば、en-US のセットアップが xxxx.xx (ドットで区切られている) で、nb-NO が xxxx.xx (カンマで区切られている) の場合、それを自動検出し、それに応じて金額をフォーマットします。

事前にご協力いただきありがとうございます。

4

3 に答える 3

0

2つのインターフェイスIFormatProvider、ICustomFormatterを使用して、フォーマットを作成できます。public class TestConvertor:IFormatProvider、ICustomFormatter {public object GetFormat(Type formatType){if(formatType == typeof(ICustomFormatter))return this; nullを返します。}

    public string Format(string format, object arg, IFormatProvider formatProvider)
    {
        decimal amount = arg is decimal ? (decimal) arg : 0;
        return amount.ToString("C", CultureInfo.CurrentCulture);

    }
}
class Program
{
    static void Main(string[] args)
    {
        double amount = 2541.25;
        var f = string.Format(new TestConvertor(), "{0:Currency}", 2545);
        Console.WriteLine(f);
        Console.ReadKey();

    }
}
于 2013-02-06T11:34:51.947 に答える
0

これを試して

double amount = xxxx.xx;
string formattedCurrency=amount.ToString("C", CultureInfo.CurrentCulture);
于 2013-02-06T10:45:59.813 に答える
0

通貨として (文字列として) フォーマットされた値を取得するだけの場合は、次のようにすることができます。

MyDecimal.ToString("c");

特定のプロパティを探している場合は、タイプが である特定のカルチャのNumberFormatプロパティNumberFormatInfoを調べることができます。

このクラスには、カルチャの千単位の区切り記号、小数点記号、通貨記号、負の数の処理方法などを示すプロパティが含まれています。

通貨の便利なプロパティ:

于 2013-02-06T10:52:13.033 に答える