算术运算符的问题

问题描述 投票:1回答:1

我的问题是我试图在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,并修复它

powershell powershell-v3.0 powershell-v4.0
1个回答
4
投票

你得到了错误的答案,因为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

© www.soinside.com 2019 - 2024. All rights reserved.