Fonction approximation

Résolu/Fermé
novice53 Messages postés 5 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 juillet 2014 - 25 juin 2014 à 10:20
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 26 juin 2014 à 16:14
Bonjour,

je suis confronté à un problème, je souhaite faire une fonction qui me permet d'approximer les valeurs de mon programme.

mais le problème est qu'il ne le fait pas sur toute les valeurs, il le fait sur certain mais pas sur d'autre et je comprend pas où est le problème
voici ma fonction
Function approximation_2(coord_I As String) As String

Dim approxi_2 As Double

If Val(coord_I) < -0.0006 Then
approxi_2 = 0.0005

If Val(coord_I) > -0.0006 Then
approxi_2 = 0.0005


End If
End If

coord_I = Str(Val(coord_I) + approxi_2)
'coord_I = Mid(coord_I, 1, InStr(coord_I, ".") + 3)

If Right(coord_I, 2) = "0" Then
coord_I = Left(coord_I, Len(coord_I) - 2)
End If

approximation_2 = coord_I



End Function
quelqu'un pourrai venir à mon secour s'il vous plait
A voir également:

4 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 25/06/2014 à 14:31
Bonjour

Le début n'est pas très clair (RQ1) ni correct (RQ2)

If Val(coord_I) < -0.0006 Then
approxi_2 = 0.0005
If Val(coord_I) > -0.0006 Then
approxi_2 = 0.0005
End If
End If

RQ1. En bref ça donne

si Val(ccoor_I) différent de -0.0006
alors approxi_2=0.0005
sinon approxi_2=0 puisque ce cas n'est pas traité

RQ2. il manque un end if avant le 2° si et il y en a un entrop après le 2° si

RQ3. Peux tu décrire ce que la fonction approximation_2 est censée réaliser

Cdlmnt
0
novice53 Messages postés 5 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 juillet 2014
25 juin 2014 à 14:54
la fonction approximation est censée me donner un nombre arrondi c-a-d si j'ai un nombre qui est de 1.0000000000332E-4,
avec cette fonction approximation je suis maintenant censé avoir 0.0
ne plus trainer trop de chiffre.
mais pour l'instant c'est pas le cas avec ma fonction actuelle j'obtiens 1.0
en somme je souhaite faire une fonction qui me permet d'avoir des nombres approximatif, ne plus trainer tout les nombres après la virgule.

merci pour votre aide
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
25 juin 2014 à 15:57
Pourquoi ne pas utiliser la fonction round, éventuellement combinée avec str et val dans le cas où les valeurs sont des chaines de caractères
n est le nombre de chiffres après la virgule maxi désiré

Dim s as Double, n as Byte, approx_1 as Double
approx_1 = Round(s, n)

Dim s as Double, n as Byte, approx_2 as String
approx_2 = Str(Round(s, n))

Dim s as String, n as Byte, approx_2 as String
s = Replace(s, ",", ".")
approx_3 = Str(Round(Val(s), n))

Cdlmnt
0
novice53 Messages postés 5 Date d'inscription mercredi 25 juin 2014 Statut Membre Dernière intervention 17 juillet 2014
26 juin 2014 à 16:07
un grand merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 juin 2014 à 16:14
De rien

Je suppose que tu as vu l'erreur ici approx_3 au lieu de approx_2 dans la troisième procédure

Dim s as String, n as Byte, approx_3 as String
s = Replace(s, ",", ".")
approx_3 = Str(Round(Val(s), n))

Si c'est fini, peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne fin de journée
0