Проблемы с арифметическими операторами - PullRequest
1 голос
/ 11 апреля 2019

Моя проблема в том, что я пытаюсь вставить простую математическую формулу в сценарий 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, и вы исправили это

1 Ответ

4 голосов
/ 11 апреля 2019

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

...