Algorithme de conversion des degrés décimaux en degrés sexagésimaux [Résolu]

Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- 2 avril 2009 à 12:37 - Dernière réponse :
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- 3 avril 2009 à 14:44
salut a tous;

je voulais consernant  Comment faire pour convertir des degrés décimaux en degrés
sexagésimaux en langage DELPHI?

exemple:

latitude = 121,135° je sais que pour convertir il faut faire comme suite:





Le nombre avant la virgule indique les degrés => 121°




Multiplier le nombre après la virgule par 60 => 0,135 * 60 = 8,1




Le nombre avant la virgule devient la minute (8')




Multiplier le nombre après la virgule par 60 => 0,1 * 60 = 6




Le résultat correspond aux secondes (6").




Notre longitude sera de 121° 8' 6"  (
degrés sexagésimaux (degrés-minutes-secondes)

mais je sais pas comment faire ça en langage DELPHI alors SVP aidé moi









amani
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 2 avril 2009 à 18:53
3
Merci
function DecToSexa(Dec: Double; var Deg: Longword; var Min: Double; var Sec: Double): String;
begin
Deg := Trunc(Dec);
Min := (Dec - Trunc(Dec)) * 60;
Sec := Trunc((Min - Trunc(Min)) * 60);
Min := Trunc(Min);
Result := Format('%d° %f'' %f"', [Deg, Min, Sec]);
end;

Cette fonction prend en paramètre la latitude dans Dec, et renvoie les degrés, minutes et secondes dans Deg, Min et Sec. En bonus, elle renvoie la chaîne formatée {Degrés° Minutes' Secondes"} en résultat.

Cordialement, Bacterius !

Merci Bacterius 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Bacterius
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
- 2 avril 2009 à 14:02
0
Merci
m1 :=  0.135*60;
m2 := trunc(m1); //=8
s1 := (m1 - m2) * 60;
s2 := trunc(s1); //=6
Commenter la réponse de Guillemouze
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 2 avril 2009 à 19:31
0
Merci
correction :

function DegDToDegS(const L: extended; var D,M,S: extended): string;
var
  fE : extended;
begin
  D := int(L);
  fE := (L - D) * 60;
  M := int(fE);
  fE := (fE - M) * 60;
  S := int(fE);
  result := format('%.0f° %.0f'' %.0f"',[D,M,S]);
end;

Commenter la réponse de f0xi
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 2 avril 2009 à 19:55
0
Merci
Oui voilà ^^
Je suppose que Int est plus rapide que Trunc non ?

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 3 avril 2009 à 02:13
0
Merci
Int recupere la partie entiere d'un flottant.
Trunc, tronque le flottant et renvois la partie entiere ...

c'est a peu prés pareil ... mais Int se prete plus pour cette utilisation dans ce cas.

Commenter la réponse de f0xi
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- 3 avril 2009 à 14:42
0
Merci
merciiiiiiiiiiiiii je sais pas quoi vous dir merci beaucoup pour votre aide

amani
Commenter la réponse de cs_lidia22
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- 3 avril 2009 à 14:44
0
Merci
merci également a vous 

amani
Commenter la réponse de cs_lidia22

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.