Arrondir à 3 chiffres

Résolu
pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013 - 3 janv. 2012 à 13:02
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 19 janv. 2012 à 09:35
Bonjour,
Ceci est mon premier post bien que j'utilise énormément les exemples du forum.
Je souhaite arrondir un résultat à trois chiffres mais je me retrouve avec un arrondi complet .
Voici mon code
Public Function dmstodec(ByVal coor As Double)
dmstodec = ""
Dim degres As Double
Dim minutes As Double
Dim minutes2 As Double
Dim secondes As Double
'46.1744444 - 0.1744444 = 46 ;
degres = coor - (coor - Int(coor))
'0.174444 * 60 = 10.46664 ;
minutes = (coor - Int(coor)) * 60
'10.46664 - 0.46664 = 10 ;
minutes2 = minutes - (minutes - Int(minutes))
'0.46664 * 60 = 27.984.
'secondes = Math.Round(CDbl((minutes - Int(minutes)) * 60), 3)
secondes = (minutes - Int(minutes)) * 60
'The result must to be : 46° 10' 27.984".
MsgBox("46.1744444" & vbCrLf & secondes & vbCrLf & degres & "° " & minutes2 & "' " & Math.Round(CDbl(secondes), 3), vbOKOnly, "dms to dec")

End Function

Quelle est mon erreur svp ?

Merci par avance de votre aide

28 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 janv. 2012 à 08:21
ton lien convertisseur, pardon !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
18 janv. 2012 à 08:35
Sans vouloir polémiquer à outrance (mais quand même), tu dis :

"c'est de sa partie entière que l'on fait le calcul des degrés, minutes et secondes
c'est sa partie décimale que l'on arrondit ensuite comme on l'entend pour arriver au genre : x degrés, y minutes, z.### secondes"

Or, je constate que le convertisseur donne, pour une valeur décimale de 74.45681°, 74° 27' 24.516"
Les parties décimales de NB1 et NB2 secondes (celles que tu nommes ###) ne sont pas du tout identiques.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 janv. 2012 à 09:34
Tu lis en diagonale et sautes une correction faite immédiatement après le message de méthode :
pardon (gros doigts) ===>> correction ===>>
en y ajoutant la partie décimale de NB2
, arrondie comme on l'entend.




Mais je reviens avec, carrément, un bout de code (il sera écrit en VB6 mais facilement transposable en VB.Net). Je vais l'écrire de telle sorte qu'il sera utilisable pour tout un tas de choses (pas uniquement des degrés ou des heures) !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
18 janv. 2012 à 09:48
OK, je n'avais effectivement pas relevé ton correctif.

Il reste que, dans ce cas, et si je comprends bien, tu fais ni plus ni moins l'impasse sur la partie décimale de NB1 :

"c'est de sa partie entière que l'on fait le calcul des degrés, minutes et secondes
c'est sa partie décimale (donc partie décimale de NB2 résultat du traitement de la partie entière de NB1) que l'on arrondit ensuite comme on l'entend pour arriver au genre : x degrés, y minutes, z.### secondes"

Qu'advient-il de la partie décimale de NB1 ?

Je suis curieux de voir ton code... qui je pense m'aidera à comprendre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 janv. 2012 à 09:55
1) NON ! pas du tout (tu continues à lire en diagonale ?). J'en tiens bien évidemment compte (DEC)
2) je viens de constater que ton "convertisseur" sur le web manque d'exactitude . (un petit bug ?)
J'ai presque fini mon petit bout de code polyvalent ... Je reviens avec


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
18 janv. 2012 à 11:17
Ton code marche effectivement aussi.
0
pierrotm777 Messages postés 24 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 27 mai 2013
19 janv. 2012 à 09:24
merci encore une fois pour votre aide . c'est vraiment sympa de votre part !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 janv. 2012 à 09:35
Pas de quoi, mais ... Et le tag(s) "réponse acceptée" ? Partout ou solution bonne ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous