Calcul simple

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Calcul simple

Message 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
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message 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...
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

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

Message 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
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Message par Pascal Vernie »

mini$ et maxi$ je les reccupère dans un fichier .txt.
comment déclarer une variable text en flottant.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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 ).
Image
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message 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:
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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 
Dernière modification par Flype le jeu. 23/nov./2006 19:23, modifié 1 fois.
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ah - pardon dobro - meme idée ;)
Image
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Message 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
Répondre