这两个格式字符串的结果之间有区别吗?
作者:互联网
我继承了一些价格格式如下的代码:
(1.23d).ToString("£0.00");
我通常会这样格式化货币:
(1.23d).ToString("C");
如果将计算机的语言环境设置为UK(是),那么这两种方法之间有什么区别吗?我可以在整个解决方案中做一个大发现和替换吗?
解决方法:
您可以通过在具有该语言环境的计算机上运行此代码来部分验证该代码(或通过首先使用Thread.CurrentThread.CurrentCulture = new CultureInfo(“ en-GB”);来强制执行此代码):
var nf = CultureInfo.CurrentCulture.NumberFormat;
Console.WriteLine("CurrencyPositivePattern: " + nf.CurrencyPositivePattern);
Console.WriteLine("CurrencyNegativePattern: " + nf.CurrencyNegativePattern);
Console.WriteLine("NegativeSign: " + nf.NegativeSign);
Console.WriteLine("CurrencySymbol: " + nf.CurrencySymbol);
Console.WriteLine("CurrencyDecimalDigits: " + nf.CurrencyDecimalDigits);
Console.WriteLine("CurrencyDecimalSeparator: " + nf.CurrencyDecimalSeparator);
Console.WriteLine("CurrencyGroupSeparator: " + nf.CurrencyGroupSeparator);
Console.WriteLine("CurrencyGroupSizes: " + string.Join(",", nf.CurrencyGroupSizes.Select(gs => gs.ToString())));
请注意组大小属性.在我的机器上,此代码:
Console.WriteLine((1232323d).ToString("C"));
Console.WriteLine((1232323d).ToString("£0.00"));
由于数字组,产生两个不同的字符串.
另外,正如此处其他人所指出的,或者您可能已经知道,应使用小数而不是双精度货币.
标签:string-formatting,c 来源: https://codeday.me/bug/20191122/2057064.html