如何在打印双倍时强制.net使用某些分隔符?

时间:2012-07-26 09:26:30

标签: c#

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用自定义NumberFormatInfo

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

如果像这样创建,您将扩展“不变”格式信息。

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

答案 1 :(得分:2)

将拟合CultureInfo作为第二个参数传递。

例如

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

你总是打印出一个“,”(这就是德国的情况)。

使用culture info参数,您可以声明所需的区域设置。对于数据存储和机器输出,您应始终使用CultureInfo.InvariantCulture。

答案 2 :(得分:0)

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