a votre avis ...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

a votre avis ...

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: a votre avis ...

Message 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
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

ouais, je me doutais du truc la ! Pb calcule en 1er les parentheses, stocke, le resultat puis continue ! ok merci.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

essaye ça

c.l = Int((a/b)*100)
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

Oui, ca marche Denis! Et cette fois, c'est calculer en 1 ligne !
:wink:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Sinon faut faire :

Code : Tout sélectionner

a = 10
b = 20

c.l = (a*100)/b

debug c 
Lio :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre