请考虑以下代码:
$Obj = @(
[PSCustomObject]@{
LimitNew = 5368709120
Usage = 6166915072
}
[PSCustomObject]@{
LimitNew = 10737418240
Usage = 5368709120
}
[PSCustomObject]@{
LimitNew = 107374182400
Usage = 86973087744
}
[PSCustomObject]@{
LimitNew = 107374182400
Usage = 97710505984
}
)
$CultInfo = New-Object System.Globalization.CultureInfo -ArgumentList 'en-us',$false
$CultInfo.NumberFormat.PercentDecimalDigits = 2
$Obj |select @{L='pct used';E={($_.Usage/$_.LimitNew).ToString('P', $CultInfo)}}
返回以下输出:
pct used
--------
114.87 %
50.00 %
81.00 %
91.00 %
我真正想要的是以下输出:
pct used
--------
114.87 %
50 %
81 %
91 %
在阅读documentation时,我似乎无法找到在他们出现时忽略尾随零的选项。方法$CultInfo.NumberFormat.PercentDecimalDigits
指定查看小数分隔符后面的位数,但不指定如何省略零。
答案 0 :(得分:5)
同时阅读Custom Numeric Format Strings:
"%"自定义说明符
格式字符串中的百分号(
%
)会导致数字 在格式化之前乘以100。本地化的百分比符号 插入%出现在%的位置的数字 格式字符串。使用的百分比字符由 当前NumberFormatInfo对象的PercentSymbol属性。
以下代码段应该可以解决问题:
$Obj | Select-Object @{
L='pct used';
E={($_.Usage/$_.LimitNew).ToString('#0.## %', $CultInfo)}
}
结果:
pct used
--------
114.87 %
50 %
81 %
91 %