c# - 使用 decimal.ToString ("C") 和 CultureInfo 的自定义货币符号和小数位

标签 c# decimal currency

我对 decimal.ToString("C") 覆盖有疑问。 基本上我想做的是如下:

CultureInfo usCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = usCulture;

NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
LocalFormat.CurrencySymbol = "RM";

我想使上面的代码成为一个函数(覆盖 ToString("C")),从而在执行以下代码时:

decimal paid = Convert.ToDecimal(dr["TotalPaids"]);
lblPaids.Text = paid.ToString("C");

结果将是 RM4,900.00 而不是 $4,900.00

如何为 decimal.ToString("C") 创建一个可以解决我的问题的覆盖

提前致谢。

最佳答案

要获得像 RM 11,123,456.00 这样的格式,您还需要设置以下属性

CurrentCulture modified = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
Thread.CurrentThread.CurrentCulture = modified;
var numberFormat = modified.NumberFormat;
numberFormat.CurrencySymbol = "RM";
numberFormat.CurrencyDecimalDigits = 2;
numberFormat.CurrencyDecimalSeparator = ".";
numberFormat.CurrencyGroupSeparator = ",";

如果您在应用程序启动时执行此操作,那么每次调用 ToString("C") 方法时都会使 ms-MY 格式类似于 en-US,但使用 RM 货币符号。

关于c# - 使用 decimal.ToString ("C") 和 CultureInfo 的自定义货币符号和小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316517/

相关文章:

C# 数学应用程序的哪种数字类型?

java - 如何按日期获取汇率?

c# - 如何发送 3 次 Ping 请求?

c# - c# 代码上的 ImageURL 不显示图像

c++ - 以十进制数的二进制格式计算 1 的个数

formatting - 在Tableau中,如何修改百分比标签的小数位数?

C# 货币排列

java.util.Currency 和 ISO 4217 标准

C# WinForms - 图片/图像框选择 - 类似于 MS Paint

c# - ICollection/ICollection<T> 歧义问题