Powershell for 循环不起作用。可能的数据类型或库错误

Powershell for loop not working. Possible data type or library error

我的代码如下

for($i = 0.25; $i -le 0.70; $i+=0.05)
{
    [array]$taper_ratio += $i
}

应该向数组 taper_ratio 添加从 0.25 到 0.70 的值,包括 0.70,但是当我 运行 它不起作用。相反,数组包含的是

PS C:\Users\Austin> $taper_ratio
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65

如你所见,没有 0.70

如果你在循环中 运行 $i.GetType() 你会看到 $i 的类型是 Double。所有浮点类型(包括双精度)实际上都是最接近的可用值。这意味着例如一个数字是 0.7,但实际值可能是 0.69999999999999999999999。在这种情况下它不满足条件 $i -le 0.70.

另一方面,

Decimal 类型准确地表示值,因此您可以将 $i 的类型转换为十进制,然后脚本应该可以工作:

$taper_ratio =@()
[decimal]$i = 0
for($i = 0.25; $i -le 0.70; $i+=0.05)
{
    $taper_ratio += $i
}
$taper_ratio