Powershell 向上舍入功能

JHa*_*ey1 3 math powershell rounding

我想在 Powershell 中四舍五入到两位小数。

我从双“178.532033”开始。如果我使用 Excel ROUNDUP 函数保留两位小数,我会得到“178.54”。

=ROUNDUP(A1,2)
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用 Powershell 中 Math 类中包含的 Round 函数,我会得到结果“178.53”(因为我是四舍五入而不是四舍五入):

$value = 178.532033

Write-Output = ([Math]::Round($value, 2))
Run Code Online (Sandbox Code Playgroud)

有没有办法在Powershell中四舍五入到两位小数?

Gra*_*ham 8

这可以通过math 类的ceilingfloor方法轻松处理。

脚本:

$a = 657
$b = 234

$a/$b
[math]::floor($a/$b)
[math]::ceiling($a/$b)
Run Code Online (Sandbox Code Playgroud)

输出:

2.80769230769231
2
3
Run Code Online (Sandbox Code Playgroud)

如果要四舍五入到两位小数,请在使用地板/天花板之前乘以 100,然后将结果除以 100。

我发现您很少会成为最后一个编辑 PowerShell 脚本的人,保持它们简单是一年后不会收到电子邮件的关键.


Pat*_*k87 7

在四舍五入之前添加 0.005:

$value = 178.532033
Write-Output = ([Math]::Round($value + 0.005, 2))
Run Code Online (Sandbox Code Playgroud)

这需要区间 [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)
Run Code Online (Sandbox Code Playgroud)

围捕:

$a = 9;
$b = 5;
if ( ($a % $b) -eq 0 )
{
  $a/$b
}
else 
{
  [math]::truncate($a/$b)+1
}
Run Code Online (Sandbox Code Playgroud)