是否有用 String.Format 和百分比删除尾随零的符号?
Is there notation to remove trailing zeros with String.Format and percentage?
我知道可以使用格式模式中的 #
删除尾随零:
double value = 92;
string formatted = $"{value:0.#}"; // "92"
并使用 P
得到一个百分比:
double value = .9234;
string formatted = $"{value:P1}"; // "92.3%"
但是有没有办法将两者结合起来产生带可选小数的百分比?
double value .92;
string formatted1 = $"{value:P#}"; // doesn't work.
string formatted2 = $"{value:P0.#}"; // doesn't work.
有谁知道只使用格式来实现此目的而不必将值乘以 100 的方法吗?基本上我想要 .92 => 92%
和 .924 => 92.4%
Documentation 确实仅指定用于修改的精度说明符。如果你想要像你发布的那样的东西,你必须采用更乏味的方式:
double value = 0.924;
string formatted = $"{value * 100:0.##}%";
结果是:92.4%
如果您不想相乘,可以使用正则表达式删除尾随零。但是如果你追求性能,乘法(在其他答案中)会更快。
double value = .9253;
string formatted = $"{value:P2}"; // or P with any number you like.
formatted = Regex.Replace(formatted, @"(?<=\d\.\d+)0+%$|\.0+%", "%");
好吧,这有点尴尬,但显然很简单:
double value1 .92;
double value2 .923;
string formatted1 = $"{value:0.#%}"; // "92%"
string formatted2 = $"{value:0.#%}"; // "92.3%"
%
符号是用于将数字乘以 100 并加上百分号的符号。使用 P
是更短的表示法,但是 %
让我们自定义输出。
所以格式字符串就像标准的 0.#
但末尾有一个百分号 0.#%
我知道可以使用格式模式中的 #
删除尾随零:
double value = 92;
string formatted = $"{value:0.#}"; // "92"
并使用 P
得到一个百分比:
double value = .9234;
string formatted = $"{value:P1}"; // "92.3%"
但是有没有办法将两者结合起来产生带可选小数的百分比?
double value .92;
string formatted1 = $"{value:P#}"; // doesn't work.
string formatted2 = $"{value:P0.#}"; // doesn't work.
有谁知道只使用格式来实现此目的而不必将值乘以 100 的方法吗?基本上我想要 .92 => 92%
和 .924 => 92.4%
Documentation 确实仅指定用于修改的精度说明符。如果你想要像你发布的那样的东西,你必须采用更乏味的方式:
double value = 0.924;
string formatted = $"{value * 100:0.##}%";
结果是:92.4%
如果您不想相乘,可以使用正则表达式删除尾随零。但是如果你追求性能,乘法(在其他答案中)会更快。
double value = .9253;
string formatted = $"{value:P2}"; // or P with any number you like.
formatted = Regex.Replace(formatted, @"(?<=\d\.\d+)0+%$|\.0+%", "%");
好吧,这有点尴尬,但显然很简单:
double value1 .92;
double value2 .923;
string formatted1 = $"{value:0.#%}"; // "92%"
string formatted2 = $"{value:0.#%}"; // "92.3%"
%
符号是用于将数字乘以 100 并加上百分号的符号。使用 P
是更短的表示法,但是 %
让我们自定义输出。
所以格式字符串就像标准的 0.#
但末尾有一个百分号 0.#%