Powershell 为什么数学运算符没有使用正确的值进行舍入。?

Powershell 为什么数学运算符没有使用正确的值进行舍入。?,powershell,Powershell,当我尝试对这些值进行四舍五入时,结果是不同的。请注意以下输出。它只适用于奇数。我在做什么 PS C:\> [math]::Round(1.5) 2 PS C:\> [math]::Round(2.5) 2 PS C:\> [math]::Round(3.5) 4 PS C:\> [math]::Round(4.5) 4 PS C:\> [math]::Round(5.5) 6 PS C:\> [math]::Round(6.5) 6 [math]使

当我尝试对这些值进行四舍五入时,结果是不同的。请注意以下输出。它只适用于奇数。我在做什么

PS C:\> [math]::Round(1.5)
2

PS C:\> [math]::Round(2.5)
2

PS C:\> [math]::Round(3.5)
4

PS C:\> [math]::Round(4.5)
4

PS C:\> [math]::Round(5.5)
6

PS C:\> [math]::Round(6.5)
6

[math]
使用四舍五入

从中的“注释”部分

…这意味着数字将四舍五入到最接近的偶数。这 不遵守我在数学中学到的规则 以5结尾总是向上舍入到下一个更高级别的数字。到 用我们大多数人学习数学的方式得到圆函数 根据规则,您可以使用附加的AwayFromZero开关(Dan Sheehan)

如果你总是想凑热闹,你可以用


@LotPings的可能重复-看起来更像是数学在使用银行家舍入法,请参见解释以获得更清晰的信息!或者,您可以使用字符串格式
N0
,如
“{0,N0}”-f2.5
(2.5)。ToString('N0')
我正要发布相同的链接,添加
.001
确实较短,但使用AwayFromZero的意图更为明确,它至少为您提供了一些搜索内容;)(这对我来说是新鲜事)
[math]::Round(2.5, 0, [System.MidpointRounding]::AwayFromZero)