我对 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/