NumberFormatInfo NumberDecimalDigits 尽管回答类似,但不起作用

NumberFormatInfo NumberDecimalDigits not working despite similar answer

提问人:Patrick 提问时间:11/2/2023 更新时间:11/2/2023 访问量:29

问:

这似乎是一项非常简单的任务,但我无法解决这个问题。 我需要在任何国际体系上写一个十进制数

  1. 没有千位分隔符'
  2. 小数点分隔符为 。
  3. 固定的小数位数

所以没有 1'234,56789 而是 1234.5678

按照这个答案,似乎很简单。

我有定义

var nfi = new NumberFormatInfo()
{
    NumberDecimalSeparator = ".",
    PerMilleSymbol = "",
    NumberDecimalDigits = 4
};

然后我用它来

string aaa = string.Format(nfi, "{0:N}", d);

string aaa = d.ToString("N", nfi);

但是千位分隔符不起作用,我得到“1,234.5679”

相反,如果我这样做

string aaa = d.ToString(nfi);

它是 NumberDecimalDigits 不起作用,我得到“1234.56789000003”

因此,在这两种方式中,我都无法摆脱所有限制来开始工作。

感谢您帮助我找到解决这个问题的干净方法。 帕特里克

C# 字符串 类型 double 数据转换

评论

1赞 Renat 11/2/2023
标准方法是使用内置的、字面上与文化无关的格式InvariantCulture

答:

2赞 J.Salas 11/2/2023 #1

您正在使用正确的PerMilleSymbolNumberGroupSeparator

因此,您的自定义格式信息应该是

var nfi = new NumberFormatInfo()
{
    NumberDecimalSeparator = ".",
    NumberGroupSeparator= "",
    NumberDecimalDigits = 4
};

评论

0赞 Patrick 11/2/2023
谢谢!正确的用法是字符串 aaa = string。格式(nfi, “{0:N}”, d);