如何设置CultureInfo.InvariantCulture默认?

时间:2012-10-04 14:46:54

标签: c# double

当我在C#中有这样的代码时:

double a = 0.003;
Console.WriteLine(a);

打印“0,003”。

如果我有另一段代码:

double a = 0.003;
Console.WriteLine(a.ToString(CultureInfo.InvariantCulture));

打印“0.003”。

我的问题是我需要一个点作为十进制标记,但C#默认使用逗号。此外,我不想为打印出一个双变量而输入这么长的代码。

7 个答案:

答案 0 :(得分:32)

您可以将当前主题的文化设置为您想要的任何文化:

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

请注意,更改文化也会影响字符串比较和排序,日期格式以及日期和数字的解析等内容。

答案 1 :(得分:5)

1空字符串指定config.file

中的InvariantCulture

默认情况下,在配置中将Culture和UICulture设置为“”。

   <system.web>
      <globalization culture="" />
   </system.web>

2您也可以在Thread

上定义

答案 2 :(得分:4)

自.NET Framework版本4.5(和.NET Core / Standard 1.0)以来,您可以通过修改CultureInfo.DefaultThreadCurrentCulture来更改整个应用程序的区域性,而不仅仅是当前的Thread。和CultureInfo.DefaultThreadCurrentUICulture属性:

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;

答案 3 :(得分:3)

默认情况下,C#不会使它成为逗号,这是你的文化。尝试明确设置文化,

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

链接:http://msdn.microsoft.com/en-us/library/ms425914(v=office.12).aspx

答案 4 :(得分:1)

如果从不想要特定于文化的数字和日期格式,您可以设置文化一次,也许是在应用程序启动时。

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture

如果它是ASP.NET应用程序,更简单的替代方法是在web.config的<globalization>配置元素中设置区域性。

否则,您没有明确指定文化的替代方法。如果您发现自己重复键入相同的长行代码,请执行以下常规操作:将其包装在方法中。

答案 5 :(得分:1)

当您致电WriteLine()并提供双倍内容时,会在内部或多或少地进行此调用:

Console.WriteLine(a.ToString(CultureInfo.CurrentCulture));

现在的任务是用CurrentCulture替换InvariantCulture。这可以通过以下代码行完成:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

现在你的线程被设置为InvariantCulture,你的第一个电话也应该打印&#34; 0.003&#34;。

答案 6 :(得分:1)

您可以将CultureInfo.InvariantCulture设置为默认设置,如上所示@Guffa和其他人。

但你必须明白为什么要这样做。如果你进行数据导出/导入操作就没问题,但是你可能不会将它用于呈现给用户的字符串。

Microsoft文档声明:

  

不变文化对文化不敏感;它与...有关   英语,但不包括任何国家/地区。你指定了   通过在调用中使用空字符串(“”)按名称进行不变文化   CultureInfo实例化方法。 ......

     

与文化敏感数据不同,   这可能会因用户自定义或更新而受到更改   .NET Framework或操作系统,不变的文化数据是   随着时间的推移和跨越已安装的文化稳定,不可能   由用户定制。这使得不变文化变得特别   对于需要与文化无关的结果的操作非常有用   作为持久化格式化数据的格式化和解析操作,或   需要显示数据的排序和排序操作   无论文化如何,都是固定的。