Page 1 sur 1

a votre avis ...

Publié : ven. 04/mai/2007 18:09
par jerexgrz

Code : Tout sélectionner

a = 10
b = 20

c.l = (a/b)*100

debug c
A cause du type .l de la variable c, on a 0. Cependant, si cette variable est du type flottante donc .f, le resultat est correct.

Sauf, que logiquement vu que j'obtiens un resultat sans virgule,le resultat ne devrait il pas etre mis dans la variable .l quand meme ? vu que c'est un ensemble de calculs et non :

c = a/b
c =c *100

10/20 = 0.5 ensuite *100 = 50

Re: a votre avis ...

Publié : ven. 04/mai/2007 18:20
par Backup
jerexgrz a écrit :

Code : Tout sélectionner

a = 10
b = 20

c.l = (a/b)*100

debug c
A cause du type .l de la variable c, on a 0. Cependant, si cette variable est du type flottante donc .f, le resultat est correct.

Sauf, que logiquement vu que j'obtiens un resultat sans virgule,le resultat ne devrait il pas etre mis dans la variable .l quand meme ? vu que c'est un ensemble de calculs et non :

c = a/b
c =c *100

10/20 = 0.5 ensuite *100 = 50
j'ai failli me faire avoir :lol:

non c'est normal !!

le prg calcul d'abord ce qui se trouve entre parenthèse (ordre des priorités)!!

donc , 10/20=0.5 , et la précisément il est bien sur des variables type long

ce résultat provisoire, il va le stocker !!
il utilise pour cela le type de la variable en cours !

donc il vire ce qui ce trouve apres la virgule !! , il garde 0
puis il continue son calcul en mode Long

0*100=0 !! qu'il attribut a la variable c !!!

lorsque tu fait exécuter les calculs par des variable, le type Décide du résultat !, heureusement, sinon , il faudrai que PureBasic devine, en quoi tu voudrai le résultat !!

n'oublie pas que tout les calcul sont fait en Binaire !!,
et que le nombre de Bits, qui est pris en compte, est décidé par le Type de la Variable !! :D


Meme de façon transitoire, si tu sais qu'un calcul peut avoir des virgule, il vaut mieux pour la precision etre en Flottant !!
quitte ensuite a ne garder que la partie entiere :D

Publié : ven. 04/mai/2007 18:33
par jerexgrz
ouais, je me doutais du truc la ! Pb calcule en 1er les parentheses, stocke, le resultat puis continue ! ok merci.

Publié : sam. 05/mai/2007 4:17
par Anonyme2
essaye ça

c.l = Int((a/b)*100)

Publié : sam. 05/mai/2007 10:33
par jerexgrz
Oui, ca marche Denis! Et cette fois, c'est calculer en 1 ligne !
:wink:

Publié : sam. 05/mai/2007 11:40
par Anonyme2
Ben oui ça marche, c'est fait pour ça :D

Merci Fred

C'est dans l'aide, rubrique Math ou tu trouveras aussi Round() qui est proche.

Publié : sam. 05/mai/2007 14:02
par lionel_om
Sinon faut faire :

Code : Tout sélectionner

a = 10
b = 20

c.l = (a*100)/b

debug c 
Lio :wink: