Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这两种格式字符串的结果有什么不同吗?_C#_String Formatting - Fatal编程技术网

C# 这两种格式字符串的结果有什么不同吗?

C# 这两种格式字符串的结果有什么不同吗?,c#,string-formatting,C#,String Formatting,我继承了一些代码,其中价格的格式如下: (1.23d).ToString("£0.00"); (1.23d).ToString("C"); 我通常会这样格式化货币: (1.23d).ToString("£0.00"); (1.23d).ToString("C"); 如果机器的语言环境设置为UK(英国),那么这两种方法之间有什么区别吗?我可以在整个解决方案中进行一次大的查找和替换吗?这没有什么区别。如果在您的区域语言设置中选择了所需的货币 是的,始终首选decimal作为货币的数据类型。根

我继承了一些代码,其中价格的格式如下:

(1.23d).ToString("£0.00");
(1.23d).ToString("C");
我通常会这样格式化货币:

(1.23d).ToString("£0.00");
(1.23d).ToString("C");

如果机器的语言环境设置为UK(英国),那么这两种方法之间有什么区别吗?我可以在整个解决方案中进行一次大的查找和替换吗?

这没有什么区别。如果在您的区域语言设置中选择了所需的货币

是的,始终首选
decimal
作为货币的数据类型。

根据标准,“C”格式说明符的行为由当前区域性中的设置决定。您可以通过检查
NumberFormatInfo
来确认:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
var nfi = Thread.CurrentThread.CurrentCulture.NumberFormat;
Console.WriteLine(nfi.CurrencyDecimalDigits);
Console.WriteLine(nfi.CurrencyDecimalSeparator);
Console.WriteLine(nfi.CurrencyNegativePattern);
Console.WriteLine(nfi.CurrencyPositivePattern);
Console.WriteLine(nfi.CurrencySymbol);

您可以通过在具有该区域设置的计算机上运行此代码(或者首先通过
Thread.CurrentThread.CurrentCulture=new CultureInfo(“en GB”);
强制执行此代码)部分验证:

请注意“组大小”属性。在我的机器上,此代码:

Console.WriteLine((1232323d).ToString("C"));
Console.WriteLine((1232323d).ToString("£0.00"));
由于数字组的原因,生成两个不同的字符串


此外,正如其他人在这里所指出的,而且您可能已经知道,货币应该使用十进制而不是双精度可能会更明确地说明数字总是表示(业务逻辑),这不仅仅是一个任意的显示方式。

我想知道它是否会对负值产生影响,但它似乎不会。我希望您正在修复应用程序,使其对数值使用
十进制
而不是
双精度
,同时…@JonSkeet它在数字分组的上下文中起到了作用。@BartoszKP:啊,对-我没有尝试任何超过1000的数字。您没有提到货币组大小,这在这里似乎很重要。@BartoszKP:一个疏忽。您可以添加它。