Page 1 sur 1

Calcul simple

Publié : jeu. 23/nov./2006 16:28
par Pascal Vernie
Bonjour à tous
Pourquoi ce code :

Code : Tout sélectionner

mini$ = "-0.20"
maxi$ = "+1.00"
mini = ValF(mini$)
maxi = ValF(maxi$)
resultat.f = (mini + maxi)/2
Debug resultat.f
me donne 0.5 comme resultat au lieu de 0.4
merci de votre aide.
Pascal

Publié : jeu. 23/nov./2006 16:47
par Jacobus

Code : Tout sélectionner

mini$ = "-0.20" 
maxi$ = "+1.00" 
mini = ValF(mini$) :Debug mini
maxi = ValF(maxi$) :Debug maxi 
Resultat.f = (mini + maxi)/2 
Debug Resultat.f
tu as la réponse...

Publié : jeu. 23/nov./2006 16:55
par Dorian
Car tes variables mini et maxi sont entières, lorsque le prog met les valeurs dedans, ils les arrondis.

Il faut les déclarer en float :
mini.f ...
maxi.f ...

Publié : jeu. 23/nov./2006 16:59
par Backup
oui maxi et mini ne sont pas flottant deja !! :D


Code : Tout sélectionner

mini$ = "-0.20"
maxi$ = "+1.00"
mini.f =ValF(mini$) :Debug mini
maxi.f = ValF(maxi$) :Debug maxi
Resultat.f = (mini + maxi)/2
Debug Resultat.f

Publié : jeu. 23/nov./2006 17:57
par Pascal Vernie
mini$ et maxi$ je les reccupère dans un fichier .txt.
comment déclarer une variable text en flottant.

Publié : jeu. 23/nov./2006 18:47
par Flype
salut,

dobro vient d'écrire exactement ce dont tu as besoin. tout est là.
tu utilises ValF() et c'est bien ! c'est exactement ce qu'il faut faire pour recuperer ta valeur en 'flottant' depuis une variable texte.
par contre il faut affecter la valeur reçue par ValF() dans une variable flottante ( ou double avec ValD ).

Publié : jeu. 23/nov./2006 18:57
par Dorian
Pascal Vernie a écrit :mini$ et maxi$ je les reccupère dans un fichier .txt.
comment déclarer une variable text en flottant.
C'est pas ceux là mais les 2 du dessous.

D'où l'avantage d'avoir des nom de variables bien distincts ^^. :wink:

Publié : jeu. 23/nov./2006 19:15
par Pascal Vernie
Désolé ce soir je dois être HS mais le code suivant donne toujours 0.5.

mini$= "-0,20"
maxi$ = "+1,00"
a.d = ValD(mini$)
b.d = ValD(maxi$)
resultat.d = (a.d + b.d)/2
Debug resultat.d

Je vais manger cela va peut-être me remettre le cerveau en place.
Pascal

Publié : jeu. 23/nov./2006 19:19
par Flype
et si tu mettais des points '.' au lieu de virgules ',' dans tes chaines ?

si tu bosses depuis un fichier texte dans lequel toutes les valeurs flottantes sont avec une virgule (fichier CSV Excel par ex ?) utilise la fonction ReplaceString()

par exemple comme çà :

Code : Tout sélectionner

Macro P(source)
  ReplaceString(source, ",", ".")
EndMacro

mini$= "-0,20"
maxi$ = "+1,00"
a.d = ValD(P(mini$))
b.d = ValD(P(maxi$))
resultat.d = (a.d + b.d)/2

Debug resultat.d 

Publié : jeu. 23/nov./2006 19:22
par Backup
Pascal Vernie a écrit :Désolé ce soir je dois être HS mais le code suivant donne toujours 0.5.

mini$= "-0,20"
maxi$ = "+1,00"
a.d = ValD(mini$)
b.d = ValD(maxi$)
resultat.d = (a.d + b.d)/2
Debug resultat.d

Je vais manger cela va peut-être me remettre le cerveau en place.
Pascal

Code : Tout sélectionner



mini$= "-0,20"
maxi$ = "+1,00"
mini$=ReplaceString(mini$,",",".")
maxi$=ReplaceString(maxi$,",",".")
a.d = ValD(mini$)
b.d = ValD(maxi$)
Resultat.d = (a.d + b.d)/2
Debug Resultat.d 

Publié : jeu. 23/nov./2006 19:25
par Flype
ah - pardon dobro - meme idée ;)

Publié : jeu. 23/nov./2006 19:34
par Pascal Vernie
Le Grand-pére vous remercie de vos réponses, ce n'est pas facile de s'occuper des deux petites "teignes" et de réfléchir lorsque la Grand-mére n'est pas là.
Dans mon dernier code j'avais effectivement laissé les virgules au lieu de points.
C'est pas tout ça mais les "Lustrucru" vont être trop cuites, j'y vais sinon ça va barder.
Merci encore
Amitiés
Pascal