NumberFormatInfo NumberDecimalDigits无效(?)

Car*_*s28 2 c#

我正在尝试使用点作为分隔符和两个十进制数字来获取双值的字符串解释,但是:

double d = 8.78595469;
Console.WriteLine(d.ToString("F"));
Run Code Online (Sandbox Code Playgroud)

返回 8,78

所以我试图根据这个问题使用NumberFormatInfo类:

double d = 8.78595469;

var formatInfo = new NumberFormatInfo
{
    NumberDecimalSeparator = ".",
    NumberDecimalDigits = 2
};

Console.WriteLine(d.ToString(formatInfo));
Run Code Online (Sandbox Code Playgroud)

返回8.78595469,井分隔符是我想要的点,但为什么有超过2位小数?

编辑:

我不是在寻找其他方法来实现这一点(我可以使用,.ToString("0.00", CultureInfo.InvariantCulture)但我想知道为什么NumberDecimalDigits不工作(?)

Sea*_*ayn 8

如果要使用NumberFormatInfo,则必须使用N Format说明符.

double d = 8.78595469;

var formatInfo = new NumberFormatInfo
{
    NumberDecimalSeparator = ".",
    NumberDecimalDigits = 2
};

Console.WriteLine(string.Format(formatInfo, "{0:N}", d)); <--- N specifier
Run Code Online (Sandbox Code Playgroud)