JHa*_*ey1 3 math powershell rounding
我想在 Powershell 中四舍五入到两位小数。
我从双“178.532033”开始。如果我使用 Excel ROUNDUP 函数保留两位小数,我会得到“178.54”。
=ROUNDUP(A1,2)
但是,如果我使用 Powershell 中 Math 类中包含的 Round 函数,我会得到结果“178.53”(因为我是四舍五入而不是四舍五入):
$value = 178.532033
Write-Output = ([Math]::Round($value, 2))
有没有办法在Powershell中四舍五入到两位小数?
这可以通过math 类的ceiling和floor方法轻松处理。
脚本:
$a = 657
$b = 234
$a/$b
[math]::floor($a/$b)
[math]::ceiling($a/$b)
输出:
2.80769230769231
2
3
如果要四舍五入到两位小数,请在使用地板/天花板之前乘以 100,然后将结果除以 100。
我发现您很少会成为最后一个编辑 PowerShell 脚本的人,保持它们简单是一年后不会收到电子邮件的关键.
在四舍五入之前添加 0.005:
$value = 178.532033
Write-Output = ([Math]::Round($value + 0.005, 2))
这需要区间 [1.000, 1.010) 到 [1.005, 1.015)。第一个区间 ROUNDUP(2) 中的所有值均为 1.01,第二个区间 ROUND(2) 中的所有值均为 1.01。
一般来说,如果四舍五入到小数点后 k 位,则按正常四舍五入的方式加 0.5/10^k 进行向上舍入,或减去 0.5/10^k 进行向下舍入。
小智 1
舍入:
$a = 9;
$b = 5;
[math]::truncate($a/$b)
围捕:
$a = 9;
$b = 5;
if ( ($a % $b) -eq 0 )
{
  $a/$b
}
else 
{
  [math]::truncate($a/$b)+1
}