在 C# 中,我试图根据计算机上的设置格式化金额。
因此,例如,如果 en-US 上的设置是 xxxx.xx(用点分隔)而在 nb-NO 中是 xxxx.xx(用逗号分隔),我想自动检测并相应地格式化金额。
提前感谢您的帮助。
在 C# 中,我试图根据计算机上的设置格式化金额。
因此,例如,如果 en-US 上的设置是 xxxx.xx(用点分隔)而在 nb-NO 中是 xxxx.xx(用逗号分隔),我想自动检测并相应地格式化金额。
提前感谢您的帮助。
试试这个
double amount = xxxx.xx;
string formattedCurrency=amount.ToString("C", CultureInfo.CurrentCulture);
如果您只是想将值格式化为货币(作为字符串),您可以这样做:
MyDecimal.ToString("c");
如果您正在寻找某些属性,您可以查看特定文化的NumberFormat
属性,它是 type NumberFormatInfo
。
此类包含告诉您文化的千位分隔符、小数分隔符、货币符号、如何处理负数等的属性。
货币的有用属性:
您可以使用两个接口 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();
}
}