Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2011, 16h52   #1
Invité régulier
 
Inscription : janvier 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 12
Points : 5
Points : 5
Par défaut problème de syntaxe avec ROUND

bonjour,

débutant en bash, je bute sur un problème de syntaxe (je pense en tout cas) avec round.

je veux arrondir un nombre réel à deux chiffres après la virgule. mon nombre réel est stocké dans un tableau.
j'ai essayé avec:

Code :
x=round(10^2*${tab[0]})/10^2
et d'autres variations (plus ou moins de parenthèses et de $). mais sans succès...

un coup de pouce serait le bienvenu.
seb
seb.garcia est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/05/2011, 14h20   #2
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Je ne sais pas quel est le but exact, mais est-ce que printf ne pourrait pas convenir ?

Code :
1
2
3
4
5
$ echo $test
3.95435467
$ printf -v new_test "%.2f" $test
$ echo $new_test
3.95
Edit:
printf "%.2f" $test
affiche le contenu de $test comme un nombre flottant (f) avec une précision de 2 chiffres (%.2) (voir printf)
printf -v <var_name> ...
affecte le résultat du printf à la variable var_name
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/05/2011, 14h48   #3
Invité régulier
 
Inscription : janvier 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 12
Points : 5
Points : 5
Bonjour Alek-C,

Non, malheureusement, ta solution ne me convient pas.
Car ROUND arrondit à l'entier le plus proche (càd supérieur ou inférieur). Tandis qu'en passant par PRINTIF, je ne pourrai arrondir qu'à l'entier inférieur.
Seb
seb.garcia est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/05/2011, 15h25   #4
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
C'est marrant, chez moi, printf arrondi "au plus proche"

Code :
1
2
3
4
5
6
7
8
9
$ echo $test
3.95435467
$ printf "%.2f\n" $test
3.95
$ test=$(echo "$test + 0.005" | bc)
$ echo $test
3.95935467
$ printf "%.2f\n" $test
3.96
Tu entends quoi par "arrondi à l'entier le plus proche" en parlant de nombres avec 2 chiffres derrière la virgule ?
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h02   #5
Invité régulier
 
Inscription : janvier 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 12
Points : 5
Points : 5

autant pour moi... je n'avais pas essayé, pensant que l'on s'était mal compris et, après lecture du manuel de printf, j'avais cru comprendre que printf n'arrondissait pas au plus proche.

en tout cas, ca marche. merci beaucoup!

quand à l' "arrondi à l'entier le plus proche" en parlant de nombres avec 2 chiffres derrière la virgule: round arrondit à l'entier le plus proche. je voulais donc multiplier mon réel par 100, l'arrondir à l'entier le plus proche avec round, avant de diviser cet entier par 100. et ainsi obtenir un nombre à 2 chiffres après la virgule.

encore merci
seb
seb.garcia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h16   #6
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
en général, on utilise "arrondir" ou "tronquer" selon l'un ou l'autre cas, et pour printf, on parle bien d'arrondi
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h23.


 
 
 
 
Partenaires

Hébergement Web