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
我的代码如下
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