0

我以这种方式将双精度转换为字符串:myDouble.ToString("0.0000000000000000")我注意到在某些机器.上用作分隔符,而在另一台机器,上使用。我想这取决于 Windows 中的区域设置。

我在另一个程序中使用我的输出,该程序总是期望,作为分隔符(无论当前的区域设置如何)。所以我希望 c# 强制始终使用,忽略区域设置。怎么做?

4

3 回答 3

3

您可以使用自定义NumberFormatInfo

var nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ",";
var myDouble = 10.156d;
Console.WriteLine(myDouble.ToString("0.0000000000000000", nfi));

当这样创建时,您将扩展“不变”格式信息。

上面的代码将输出10,1560000000000000到控制台。

于 2012-07-26T09:33:33.323 回答
2

传入合适的 CultureInfo 作为第二个参数。

例如与

myDouble.ToString("0.0000000000000000", new CultureInfo("de-DE"))

你总是会用“,”来打印它(德国就是这样)。

使用文化信息参数,您可以声明您想要的区域设置。对于数据存储和机器输出,您应该始终使用 CultureInfo.InvariantCulture。

于 2012-07-26T09:29:29.303 回答
0

您可以尝试设置Thread.CurrentThread.CurrentUICulture和/或 .CurrentCulture 为CultureInfo("de-DE").

于 2012-07-26T09:32:23.797 回答