Вы получаете неправильный ответ, потому что 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]
. См. Об операторах типа