根据C#中的计算机设置格式化数字(金额)

本文关键字:数字 金额 格式化 设置 计算机 根据 | 更新日期: 2023-09-27 17:58:10

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

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

感谢您提前提供的帮助。

根据C#中的计算机设置格式化数字(金额)

试试这个

double amount = xxxx.xx;
string formattedCurrency=amount.ToString("C", CultureInfo.CurrentCulture);

如果你只是想获得格式化为货币(字符串)的值,你可以这样做:

MyDecimal.ToString("c");

如果要查找某些属性,可以查找特定区域性的NumberFormat属性,该属性的类型为NumberFormatInfo

这个类包含一些属性,告诉您区域性的千位分隔符、十进制分隔符、货币符号、如何处理负数等。

货币的有用属性:

  • CurrencyDecimalSeparator
  • CurrencySymbol
  • NumberDecimalSeparator

您可以使用双接口IFormatProvider,ICustomFormatter来创建您的格式:公共类TestConvertor:IFormatProvider,ICustomFormatter{公共对象GetFormat(Type formatType){if(formatType==typeof(ICustomFormatter))返回此;返回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();
    }
}