cs_AudreyV
Messages postés9Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention15 septembre 2005
-
4 juil. 2005 à 11:05
cs_AudreyV
Messages postés9Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention15 septembre 2005
-
4 juil. 2005 à 13:25
Bonjour,
J'aimerais obtenir des résultats avec une précision de 3 chiffres après la virgule. Pour calculer mes résultats, je suis obligée de passer par des compteurs intermédiaires.
Pour la première étape, je travaille avec des nombres précis à 0.001 pour calculer un numérateur et un dénominateur que j'obtiens également à 0.001 près.
Par contre, quand je divise num par den, j'obtiens forcèment des entiers...
Comment faire pour garder la précision ??
KC62
Messages postés229Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention20 juin 2007 4 juil. 2005 à 11:11
Salut !
petite question :
ta variable qui reçoit le calcul est t-elle déclaré en "long" ?
Sinonn essaye de l'afficher directement
msgbox num/den par exemple et voit le résultat...
j'espere t'avoir aidé.
KC62
On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
KC62
Messages postés229Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention20 juin 2007 4 juil. 2005 à 11:11
Salut !
petite question :
ta variable qui reçoit le calcul est t-elle déclaré en "long" ?
Sinonn essaye de l'afficher directement
msgbox num/den par exemple et voit le résultat...
j'espere t'avoir aidé.
KC62
On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
cs_AudreyV
Messages postés9Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention15 septembre 2005 4 juil. 2005 à 11:22
Hé bien "msgbox num/den" me donne effectivement ce que je souhaiterais en précision et j'ai bien défini mes variables en Long... Mais toujours pas moyen d'obtenir autre chose que des entiers dans les cases désirées... Snif !!!
Aurais-tu aussi une solution à ce pb ?
En tout cas, merci de ta réponse rapide !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
KC62
Messages postés229Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention20 juin 2007 4 juil. 2005 à 11:29
oki, tente d'afficher tes variables :
msgbox mavariable
l'idée est de voir si ta variable contient bien la valeur souhaitée ou si C le fait de la placer dans une "case" qui retire les virgules...
Si c'est la variable, c'est trés étrange, fait alors un copie de ton code pour que l'on voit.
Si c'est la mise en "case" lol alors essaye avec un label plutot qu'une textbox. quoique la encore les textbox ne pose pas de souci d'habitude.
Di moi quoi et essaye de nous donner un maxde détails (code par exemple...)
Voila, bon courage,
KC62
On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
cs_AudreyV
Messages postés9Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention15 septembre 2005 4 juil. 2005 à 11:40
C'est étrange je dirais : quand j'affiche 1 - num/den, j'obtiens la précision voulue avec la valeur correcte (calcul manuel) mais quand j'affiche nash (qui est strictement égal à 1 - num/den), j'obtiens systématique l'entier le plus proche.
Voili le code si jamais tu décéles une erreur ou une subtilité... Ce serait génial !
' Calcul de Qobs
j = i
Do
num_qobs = num_qobs + .Cells(j, 2)
j = j + 1
Loop Until IsEmpty(.Cells(j, 1))
' Calcul de {Qobs(i) - Qmod(i)}² et {Qobs(i) - Qobsmoy}², numerateur et denominateur de Nash
l = i
Do
m = (.Cells(l, 2).Value - .Cells(l, 4).Value) * (.Cells(l, 2).Value - .Cells(l, 4).Value)
num_nash = num_nash + m
n = (.Cells(l, 2).Value - q_obs) * (.Cells(l, 2).Value - q_obs)
den_nash = den_nash + n
l = l + 1
Loop Until IsEmpty(.Cells(l, 1))
KC62
Messages postés229Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention20 juin 2007 4 juil. 2005 à 11:53
ok donc c'est ta variable qui gere mal les virgules :
tout d'abord assure toi que nas est déclaré en long
dim nash as long
ensuite si sa c'est correct tente un truc du genre :
nash = round(1 - num_nash / den_nash,3)
la fonction round(valeur;nombre) permet d'arrondir a nombre de chiffres aprés la virgule
essaye déja sa ! et tien moi au courant.
Courage ! la fin est proche :-D
KC62
On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
cs_AudreyV
Messages postés9Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention15 septembre 2005 4 juil. 2005 à 13:20
Reresnif... Toujours le même résultat... Il m'affiche un joli 1.0000 au lieu de me mettre la valeur exacte en 0.9... Et nash est bien défini en long...
Vois-tu une autre solution pour aider une âme en detresse !!! :-))