我正在以这种方式将double转换为字符串:myDouble.ToString("0.0000000000000000")
我注意到在某些计算机上.
用作分隔符,而在另一台计算机上使用,
。我想这取决于Windows中的区域设置。
我在另一个程序中使用我的输出,该程序总是希望,
作为分隔符(无论当前的区域设置如何)。所以我希望c#强制始终使用,
忽略区域设置。怎么做?
答案 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")
。