2

在我正在构建的应用程序中,我需要通过以下方式格式化百分比:

.00012 -> 0.01%
.0012 -> 0.12%
.012 -> 1.2%
.12 -> 12%
1.12 -> 112%

小于 1 的百分比应显示 2 个小数位。任何大于或等于 1 的内容都应仅显示 1 位小数。

目前我正在使用以下 3 部分格式字符串“0.0#%;(0.0#%);0%;” ,但是我似乎无法让它按我需要的方式工作,根据数字的不同,小数位数不同。如果可能的话,我想坚持使用 3 部件号格式,如果我不需要,我不想做任何乘以 100 的操作。

4

2 回答 2

4

使用条件运算符P通过-format 说明符切换两种情况。

var decimals = new List<decimal>() { 0.00012m, .0012m, .012m, .12m, 1.12m };
var result = decimals
    .Select(num => num >= 1 ? num.ToString("P1") : num.ToString("P2"));

用于百分比的 P 格式说明符正是您所追求的。

MSDN

数字乘以 100 并以百分比符号显示。

于 2013-06-05T12:21:08.777 回答
3

这应该可以得到你想要的:

Math.Round((percentage * 100), 2).ToString() + "%";

该代码假定您的百分比存储在百分比变量中

于 2013-06-05T12:31:54.293 回答