根据C#中的计算机设置格式化数字(金额)
本文关键字:数字 金额 格式化 设置 计算机 根据 | 更新日期: 2023-09-27 17:58:10
在C#中,im试图根据计算机上的设置格式化金额。
因此,例如,如果en-US上的设置是xxxx.xx(用点分隔),而在nb NO中是xxxx.xx(用逗号分隔),我想自动检测并相应地格式化金额。
感谢您提前提供的帮助。
试试这个
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();
}
}