我在Powershell中遇到了一个奇怪的行为(在这种情况下是ISE)。
示例代码:
[String]$stringVar = "\m/(o.0)\m/ "
[Double]$doubleVar1 = 2.5
[Double]$doubleVar2 = 3.5
[Double]$doubleVar3 = 4.5
[Double]$doubleVar4 = 5.5
write-host "2x $($stringVar * $doubleVar1)"
write-host "4x $($stringVar * $doubleVar2)"
write-host "4x $($stringVar * $doubleVar3)"
write-host "6x $($stringVar * $doubleVar4)"
输出:
2x \m/(o.0)\m/ \m/(o.0)\m/
4x \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/
4x \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/
6x \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/ \m/(o.0)\m/
在我看来,powershell有一些奇怪的舍入行为。 它看起来甚至小数点向下舍入(或小数点被切除),并且不均匀的小数被四舍五入。 这是正常的行为吗?
这到底发生了什么?
Powershell(ISE)版本信息($ PSVersionTable):
Name Value
---- -----
PSVersion 5.1.15063.483
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.15063.483
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Powershell控制台中的相同行为。
编辑: 正如@wOxxOm所提到的,这是正常的.net4舍入行为。