Bash Multiplier un nombre Décimal en int
J'ai lu prix: à partir de la saisie de l'utilisateur. Quand je multiplie l'entrée de l'int comme ce
T=
"$((PRICE*QTY))"|bc
; donne
la ligne 272: 12.00: erreur de syntaxe: non valide d'opérateur arithmétique (jeton d'erreur est ".00")
ou .50
en fonction de l'entrée utilisateur. Comment dois-je multiplier ces deux variables et obtenir un total avec 2 décimales?
- WOW! Que c'est bon! Je n'ai jamais vu les réponses à cette rapide dans tous les autres forums, peu importe comment ils sont actifs et surtout aller "nous avons l'habitude de faire vos devoirs pour vous", répond. Cela a fonctionné pour moi T=
echo $QTYS\* $PRICE | bc
; il est aussi l'arrondissement de prix à 2 décimales sans échelle. Pour une raison juste prix*QUANTITÉ a été de me donner la commande ne trouve pas d'erreur. - Une chose à retenir, c'est que bash ne pas vraiment avoir tout type de données à l'exception des cordes. Chaque variable est une chaîne, donc il peut vous aider à vous en souvenir. Différents programmes de cours va traiter certaines chaînes dans une manière spéciale.
Vous devez vous connecter pour publier un commentaire.
cela fonctionne:
Vous pouvez également utiliser awk
$(())
. bash ne pas faire arithmétique flottante. Si vous souhaitez définir 2 décimales, utilisez l'échelle=2bc
.Vous pouvez utiliser
mul=0.8
exp=200
texp=
awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
Espère que cela va fonctionner.
Tout d'abord, en essayant de faire de l'arithmétique à virgule flottante avec
bc(1)
sans l'aide de la-l
indicateur est lié à vous donner quelques réponses drôle:Deuxième, la
$((...))
est une tentative de faire de l'arithmétique dans votre shell; ni monbash
nidash
peut manipuler des nombres à virgule flottante.Si vous voulez faire le calcul dans votre shell, note
printf(1)
ainsi que (probablement) de votre shell intégré dansprintf
fonction. Si vous souhaitez faire le calcul en c.-b., note la variable spécialescale
.