(shell) Opération de réels avec flottants
Eyken
-
dubcek Messages postés 19030 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 19030 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai pour devoir de créer pour mes études un script shell calculant le moyenne des nombres rajoutés en paramètres.
Le script doit bien sur pouvoir calculer les chiffres à virgules.
Voila mon script :
L'emploie de scale sur la fin permet d'afficher le résultat avec 2 chiffres après la virgule, mais cela ne marche que si les paramètres rentrés sont des entiers. Si l'on y met des nombres à virgule, leur addition les transforme automatiquement en entier, et je n'arrive pas à employer SCALE lors de l'addition des variables entre elles.
Quelqu'un aurait une solution à me proposer ?
Merci d'avance !!
J'ai pour devoir de créer pour mes études un script shell calculant le moyenne des nombres rajoutés en paramètres.
Le script doit bien sur pouvoir calculer les chiffres à virgules.
Voila mon script :
#!/bin/bash count='0' somme='0' for var do echo "scale=2 ; $somme+$var" #on vérifie l'opération effectuée à chaque addition let "somme=$somme+$var" let "count=$sount+1" done echo "scale=2 ; $somme/$count" | bc
L'emploie de scale sur la fin permet d'afficher le résultat avec 2 chiffres après la virgule, mais cela ne marche que si les paramètres rentrés sont des entiers. Si l'on y met des nombres à virgule, leur addition les transforme automatiquement en entier, et je n'arrive pas à employer SCALE lors de l'addition des variables entre elles.
Quelqu'un aurait une solution à me proposer ?
Merci d'avance !!
A voir également:
- Script shell calcul moyenne
- Comment calculer la moyenne sur excel - Guide
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Mas script - Accueil - Windows
2 réponses
hello
scale est une option de bc, pas du shell. le shell ne peut pas faire d'opérations flottantes, il faut utiliser bc, awk, dc pour faire tout les calculs
scale est une option de bc, pas du shell. le shell ne peut pas faire d'opérations flottantes, il faut utiliser bc, awk, dc pour faire tout les calculs
Salut,
Si l'on y met des nombres à virgule, leur addition les transforme automatiquement en entier, et je n'arrive pas à employer SCALE lors de l'addition des variables entre elles.
Normal, bc utilise le point comme décimal et non la virgule.
Si l'on y met des nombres à virgule, leur addition les transforme automatiquement en entier, et je n'arrive pas à employer SCALE lors de l'addition des variables entre elles.
Normal, bc utilise le point comme décimal et non la virgule.
$ echo 'scale=2; 12.75 / 2' | bc 6.37De plus, ta syntaxe "for var;do..." n'est pas bonne, il faut donner du grain à moudre à la boucle for :
for var in "${@}"
do
...
done
Un moyen pour y parvenir ?
Je débute grandement dans tout ce domaine ^^
J'arrive à employer bc en echo mais pas à l'intégrer dans une variable pour pouvoir le réutiliser par la suite.
$ ./f2 2.2 3.3 5.5 scale=2 ; (2.2+3.3+5.5+0 )/3 3.66 $ $ cat f2 #!/bin/bash printf "scale=2 ; (" ; printf "%s+" $@ ; printf "0 )/$#\n" (printf "scale=2 ; (" ; printf "%s+" $@ ; printf "0 )/$#\n") | bc