Calculator
À ne pas utiliser :
echo $((145/8*4561)
mauvais calcul.
retourne 82098
Utiliser la commande : bc - l
An arbitrary precision calculator language avec l’option -l (–mathlib) : Define the standard math library.
echo 145/8*4561 | bc -l
calcul correct .
retourne 82668.12500000000000000000
J’ai vérifié en PHP OK
php -r 'echo (145/8*4561)."\n";' calcul correct , retourne 82668.125
echo 12*3.02 | bc -l
calcul correct , arrive bien à multiplier avec la virgule.
retourne 36.24
Histoire de passer le mot bonne nuitée debarien(e)s !
Astuce trouvée ici : Operation-mathematique-simple-avec-Bash commentaire de Kévin Hinault que j’ai ajouté à ma page HOW TO * GNU/Linux * Trucs et Astuces
Cordialement,
Romain
Edit de la modération : Il vous a déjà été notifié de limiter les liens vers votre site. Un seul lien suffit ; les personnes seront capables de remonter dans l’arborescence si besoin !
De même, j’ai viré les liens pour Twitter - notre forum n’est pas une vitrine ou une succursale de cet outil largement décrié pour certaines dérives. Merci d’en tenir compte.
NdMoi-même @ZW3B : OKay pour Twitter sinon comment-faire sous GNU/Linux des trucs et astuces Bon dimanche Debarien(e)s
Bonjour,
Tiens c’est étonnant, si je fais :
$ echo $((145/8*4561))
82098
$ echo 145/8*4561 |bc
82098
Maintenant comme tu le fais remarquer le résultat juste semble en effet être :
$ echo 145/8*4561 |bc -l
82668.12500000000000000000
Pourtant, si je ne veux que deux ou trois digit après la virgule, je n’obtiens pas le même résultat :
$ echo "scale=2; 145/8*4561" |bc -l
82645.32
$ echo "scale=3; 145/8*4561" |bc -l
82668.125
Mais :
$ echo "scale=2; 145*4561/8" | bc -l
82668.12
Et, pour finir :
$ echo "145/8*4561" | bc -l | awk '{ printf "%.2f\n", $1 }'
82668,00
Un manque de fiabilité ???
En tout cas, awk tout seul est bien plus fiable, exemple :
$ awk 'BEGIN { print 145/8*4561 }'
82668,1
$ awk 'BEGIN { printf "%.2f\n", 145/8*4561 }'
82668,12
Pour avoir le résultat affiché avec un point au-lieu d’une virgule :
$ LC_ALL=en_US.UTF-8 awk 'BEGIN { printf "%.2f\n", 145/8*4561 }'
82668.12
$ LC_NUMERIC=C awk 'BEGIN { printf "%.2f\n", 145/8*4561 }'
82668.12
1 « J'aime »
scale semble s’appliquer à tous les résultats d’opérations intermédiaires.
En effet, cela explique les résultats !
ça n’empêche que awk semble vraiment plus fiable !
cf : la documentation « fournie » par @grandtoubab
PHP aussi çà me rassure ^^
Mauvais résultat je le répète.
Ils ont dû oublier de mettre l’option -l (–mathlib) de bc dans leur script echo $((calc)) çà doit être juste cela ^^
1 « J'aime »