.Net字符串格式化程序中的可变小数位?

Gaz*_*yer 18 .net string-formatting

固定小数位很容易

String.Format("{0:F1}", 654.321);
Run Code Online (Sandbox Code Playgroud)

654.3
Run Code Online (Sandbox Code Playgroud)

如何在C中作为参数输入小数位数?所以

String.Format("{0:F?}", 654.321, 2);
Run Code Online (Sandbox Code Playgroud)

654.32
Run Code Online (Sandbox Code Playgroud)

我找不到应该更换的东西?

Chr*_*uts 19

要格式化的字符串不必是常量.

int numberOfDecimalPlaces = 2;
string formatString = String.Concat("{0:F", numberOfDecimalPlaces, "}");
String.Format(formatString, 654.321);
Run Code Online (Sandbox Code Playgroud)


Wol*_*eld 6

用途NumberFormatInfo

Console.WriteLine(string.Format(new NumberFormatInfo() { NumberDecimalDigits = 2 }, "{0:F}", new decimal(1234.567)));
Console.WriteLine(string.Format(new NumberFormatInfo() { NumberDecimalDigits = 7 }, "{0:F}", new decimal(1234.5)));
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!刚刚学到了一些我不知道的东西。您可能最好使用“NumberFormatInfo.CurrentInfo.Clone()”来保留当前cultureInfo的其余部分。 (2认同)