我的问题是我试图在PowerShell脚本中加入一个简单的数学公式,但这个“算术运算符”现在对我来说是一个问题,它曾经以这种方式工作,但是有些东西改变了,现在无关紧要我把它的倍数换成了更多的数字,好像它们是字母一样(它只是将它们全部堆叠在一起)
我甚至尝试使用它来修复它
$x=[int]$xx
修复我的变量,以便PowerShell可以理解,它确实工作,而不是与破碎的数字Ex: 7.5 or 3.1 or 9.6
没有破碎的数字。谁能帮我
$pi=[math]::pi
$xx= Read-Host -prompt "X "
$yy= Read-Host -prompt "Y "
$zz= Read-Host -prompt "Z "
$x=[int]$xx
$y=[int]$yy
$z=[int]$zz
$re = $z * $y
$r = $z * $x + $y * $x + $z * $x + $y * $x
$res = 2 * ($re) + $r
echo .
echo "$r = $z * $x + $y * $x + $z * $x + $y * $x"
echo .
echo "$re = $z * $y"
echo .
echo "$res = 2 * ($re) + $r"
echo .
echo "Total = $res"
echo .
pause
如果你运行它并将X设为27,Y设为7.5,Z设为17,则答案应为1578,并修复它
你得到了错误的答案,因为7.5不是[int]
。它将舍入7.5到8以将其转换为int。您需要使用$y=[single]$yy
来完成此工作或支持小数的任何其他类型。如果期望十进制值,我会用[int]
替换所有[single]
。请参阅以下内容:
$pi=[math]::pi
$xx= Read-Host -prompt "X "
$yy= Read-Host -prompt "Y "
$zz= Read-Host -prompt "Z "
$x=[single]$xx
$y=[single]$yy
$z=[single]$zz
$re = $z * $y
$r = $z * $x + $y * $x + $z * $x + $y * $x
$res = 2 * ($re) + $r
echo "$r = $z * $x + $y * $x + $z * $x + $y * $x"
echo "$re = $z * $y"
echo "$res = 2 * ($re) + $r"
echo "Total = $res"
上述变量的输出:
$x,$y,$z,$re,$r,$res
27
7.5
17
127.5
1323
1578
您可能使用的其他类型是[double]
,它是带小数的未删除数字的默认类型,以及[decimal]
。你也可以像-as
一样使用$y = $yy -as [double]
类型的算子。见About Type Operators