Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/09/2008, à 22:01

cedlerick

opération sur un nombre à virgule [RESOLU]

bonjour, je souhaiterais savoir comment effectuer des opérations sur des nombres à virgule
les classiques additions multiplication ou divisions
mais aussi des comparaisons inferieur
j'utilise la fonction expr en bourne-shell

par exemple comment faire 4.58 + 7.5
puis dire si 5.6 < 2 est vrai ou non
en pouvant bien sur remplacer les nombres par des variables...

merci d'avance...

Dernière modification par cedlerick (Le 16/09/2008, à 18:48)


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne

#2 Le 14/09/2008, à 22:08

nicolas66

Re : opération sur un nombre à virgule [RESOLU]

La commande `expr' ne manipule que des entiers. Utilise `bc' à la place :

echo "scale=2;3/5" | bc -l
# retourne 0.60

echo "scale=2;3<5" | bc -l
# retourne 1

a=3; b=5; echo "scale=2;$a+$b" | bc -l
# retourne 8

Voilou smile


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#3 Le 14/09/2008, à 22:21

cedlerick

Re : opération sur un nombre à virgule [RESOLU]

ok je comprends le truc
donc si on veux faire un test pour savoir si a < b pour faire la suite d'un "if", il faut faire un truc du genre:
a=0.5
r=`echo "scale=2;$a>1" | bc -l`
[ $r -eq 0 ] && echo ok

pas mieux???


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne

#4 Le 15/09/2008, à 00:54

nicolas66

Re : opération sur un nombre à virgule [RESOLU]

Bah ca me paraît être bien smile


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#5 Le 15/09/2008, à 06:35

harman

Re : opération sur un nombre à virgule [RESOLU]

salut

Par contre je ne vois pas l'intérêt de mettre scale=2; si c'est pour faire un test. À mon avis ça ne sert à rien dans ce cas.
Je n'utiliserais pas non plus l'option -l

#6 Le 15/09/2008, à 06:49

HP

Re : opération sur un nombre à virgule [RESOLU]

un truc que comprends pas, c'est pourquoi :

> bc <<< "3/5"
0

et

> bc <<< "5*3.5"
17.5

le premier cas, je ne comprends pas… mais peut-être est-ce dû à l'heure big_smile

EDIT:
avec scale, ça marche mieux :

> bc <<< "scale=2;3/5"
.60

ou avec -l :

> bc -l <<< "3/5"
.60000000000000000000

Dernière modification par HP (Le 15/09/2008, à 06:53)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#7 Le 15/09/2008, à 17:41

nicolas66

Re : opération sur un nombre à virgule [RESOLU]

harman a écrit :

Par contre je ne vois pas l'intérêt de mettre scale=2; si c'est pour faire un test. À mon avis ça ne sert à rien dans ce cas.
Je n'utiliserais pas non plus l'option -l

Par défaut, les calculs se font en entier. Donc si tu veux faire des calculs en flottant, faut fixer le paramètre `scale'. L'option `-l' indique que l'on souhaite utiliser la bibliothèque mathématique smile


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#8 Le 15/09/2008, à 17:55

harman

Re : opération sur un nombre à virgule [RESOLU]

nicolas66 a écrit :

Par défaut, les calculs se font en entier. Donc si tu veux faire des calculs en flottant, faut fixer le paramètre `scale'. L'option `-l' indique que l'on souhaite utiliser la bibliothèque mathématique smile

Je parlais des tests du style "inférieur à" "égal à" (comme ton second exemple). Je ne vois pas en quoi "scale" et "-l" sont utiles, j'ai pourtant fait des tests.

Ceci fonctionne très bien par exemple

echo "7.183>7.182" | bc

Si tu as un contre exemple, je veux bien le voir.

#9 Le 15/09/2008, à 20:01

cedlerick

Re : opération sur un nombre à virgule [RESOLU]

rebonjour tout le monde, bonnes remarques tout ça mais il doit aussi exister des solutions sur ce sujet en perl, non?
histoire de voir commenksé et pour condenser un peu des infos sur le sujet...


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne

#10 Le 15/09/2008, à 20:18

HP

Re : opération sur un nombre à virgule [RESOLU]

cedlerick a écrit :

ril doit aussi exister des solutions sur ce sujet en perl, non?

Ouais, et en Python aussi…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#11 Le 15/09/2008, à 20:23

nicolas66

Re : opération sur un nombre à virgule [RESOLU]

On peut même le faire en C et en Java, c'est dingue non ? On arrête pas le progrès !


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#12 Le 15/09/2008, à 20:31

cedlerick

Re : opération sur un nombre à virgule [RESOLU]

"je ne crois que ce que je vois", vous la connaissez???


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne

#13 Le 16/09/2008, à 14:56

nicolas66

Re : opération sur un nombre à virgule [RESOLU]

Un ptit résolu non ?


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#14 Le 16/09/2008, à 15:53

harman

Re : opération sur un nombre à virgule [RESOLU]

cedlerick a écrit :

il doit aussi exister des solutions sur ce sujet en perl, non?

En fait les "vrais" langages de programmation gèrent les nombres à virgule, donc il n'y pas de solution à chercher puisqu'il n'y a pas de problème

#!/usr/bin/perl
print (4.58 + 7.5) if (5.2 < 5.3)

fonctionne sans problème

#15 Le 16/09/2008, à 18:47

cedlerick

Re : opération sur un nombre à virgule [RESOLU]

d'accord harman, dans ce cas... tout est dit
merci @ tous pour votre participation


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne