我以这种方式将双精度转换为字符串:myDouble.ToString("0.0000000000000000")
我注意到在某些机器.
上用作分隔符,而在另一台机器,
上使用。我想这取决于 Windows 中的区域设置。
我在另一个程序中使用我的输出,该程序总是期望,
作为分隔符(无论当前的区域设置如何)。所以我希望 c# 强制始终使用,
忽略区域设置。怎么做?
我以这种方式将双精度转换为字符串:myDouble.ToString("0.0000000000000000")
我注意到在某些机器.
上用作分隔符,而在另一台机器,
上使用。我想这取决于 Windows 中的区域设置。
我在另一个程序中使用我的输出,该程序总是期望,
作为分隔符(无论当前的区域设置如何)。所以我希望 c# 强制始终使用,
忽略区域设置。怎么做?
您可以使用自定义NumberFormatInfo
:
var nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ",";
var myDouble = 10.156d;
Console.WriteLine(myDouble.ToString("0.0000000000000000", nfi));
当这样创建时,您将扩展“不变”格式信息。
上面的代码将输出10,1560000000000000
到控制台。
传入合适的 CultureInfo 作为第二个参数。
例如与
myDouble.ToString("0.0000000000000000", new CultureInfo("de-DE"))
你总是会用“,”来打印它(德国就是这样)。
使用文化信息参数,您可以声明您想要的区域设置。对于数据存储和机器输出,您应该始终使用 CultureInfo.InvariantCulture。
您可以尝试设置Thread.CurrentThread.CurrentUICulture
和/或 .CurrentCulture 为CultureInfo("de-DE")
.