PowerShell中的数字'e'表示法字符串比较错误

时间:2015-04-30 08:45:05

标签: powershell-v3.0 number-formatting

以下代码打印大于1

$value = "1.9964672441318374e-005"
If ($value -ge 1)
{
    Write-Host "It's greater than 1"
}
Else
{
    Write-Host "Smaller than 1"
}

我知道这可以通过将$ value转换为[double]来纠正。我想知道是否有其他人遇到过这种不一致的行为。我说不一致,因为对于十进制格式的字符串,比较产生正确的输出。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

引号使变量被视为字符串:

PS> $v=1.1e3
PS> $v |get-member #-> TypeName : System.Double     

PS> $v="1.1e3"
PS> $v |get-member #-> TypeName : System.String  

如果您删除原始代码中的引号,您会发现该比较的效果与您期望的一样。