将数值中的逗号改为点号设置

57

我有一个新的XmlDocument对象,即在我的程序中创建了xml...

我希望所创建的xml中所有数字值默认使用点号而不是逗号。

我是否可以做些什么来声明一次,而不必解析每个十进制数值?

也就是说,在开始时设置这个点而不是逗号,并且不用担心直到结束?


如果您想在 XML 中使用小数点,但希望在向用户显示值时使用小数逗号,则必须即时指定。没有“仅在 XML 中使用点”的设置。 - Hans Kesting
3个回答

120

试试这个:

System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";

System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

3
为什么不直接在当前文化中直接指定NumberDecimalSeperator? - Brent
2
@Brent Visual Studio显示了一个错误,其中说“需要对象引用才能访问非静态字段、方法或属性 'CultureInfo.NumberFormat'。”。因此,需要创建一个实例来访问相关属性。 - Caglayan DOKME

30

您可以使用 value.ToString(CultureInfo.InvariantCulture) 将数值转换为字符串。或者您可以全局更改当前区域设置为使用点作为小数分隔符的区域设置:

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

value.ToString(CultureInfo.InvariantCulture) 目前无法正常工作: https://msdn.microsoft.com/zh-cn/library/29dxe1x2(v=vs.100).aspx - Jonas
1
@Jonas,您指向的链接是关于“String.ToString(IFormatProvider)”的。有关此参数如何“保留”的部分不适用于其他类型,仅适用于字符串。 - Thomas Levesque
1
在我的版本(.NET 4.5)中,它是 CultureInfo.GetCultureInfo("en-US")。完美运行。 - itmuckel
是的,它很好用,除了我还需要GetCultureInfo - CodeMonkey
这个解决方案比被接受的答案更适合预期的目的! - jlapoutre
还要注意组分隔符 - 如果您将数字打印为“N”,则会得到逗号“,”作为组分隔符,这可能不是您在XML中想要的。 - JustAMartin

9

设置 Application.CurrentCulture 对我没有起作用。 - Ted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接