0

在 C# 中,我试图根据计算机上的设置格式化金额。

因此,例如,如果 en-US 上的设置是 xxxx.xx(用点分隔)而在 nb-NO 中是 xxxx.xx(用逗号分隔),我想自动检测并相应地格式化金额。

提前感谢您的帮助。

4

3 回答 3

0

试试这个

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

如果您只是想将值格式化为货币(作为字符串),您可以这样做:

MyDecimal.ToString("c");

如果您正在寻找某些属性,您可以查看特定文化的NumberFormat属性,它是 type NumberFormatInfo

此类包含告诉您文化的千位分隔符、小数分隔符、货币符号、如何处理负数等的属性。

货币的有用属性:

于 2013-02-06T10:52:13.033 回答
0

您可以使用两个接口 IFormatProvider、ICustomFormatter 来创建您的格式: public class TestConvertor: IFormatProvider, ICustomFormatter { public object GetFormat(Type formatType) { if (formatType == typeof(ICustomFormatter)) return this; 返回空值;}

    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 回答