C# 在特定情况下使用小数位格式化百分比

标签 c# formatting

在我正在构建的应用程序中,我需要按以下方式设置百分比格式:

.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 的操作。

最佳答案

使用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 :

Number multiplied by 100 and displayed with a percent symbol.

关于C# 在特定情况下使用小数位格式化百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939788/

相关文章:

python - 在 python 中存储字典和 json 文件类型的推荐方法是什么

java - DecimalFormat 变量组大小

python - 格式化各行打印的输出?

c# - Xamarin.forms 中可用的日语字体

c# - 返回值样式问题

java - 格式化传递给Java函数的多个参数

.net - WPF RichTextBox - 键入文本的格式

c# - 绑定(bind)命令丢失

c# - 为什么更改浏览器时日期格式会自行更改?

c# - SQL 和 C# 中两个日期计算之间的日期差异产生不同的结果