在我正在构建的应用中,我需要按以下方式格式化百分比:
.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。
答案 0 :(得分:4)
使用conditional operator使用P
- 格式说明符切换两种情况。
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并以百分号显示。
答案 1 :(得分:1)
这可以让你得到你想要的东西:
Math.Round((percentage * 100), 2).ToString() + "%";
代码假设您的百分比存储在百分比变量
中