Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Convertir numeros reales a grados, minutos, segundos (https://www.clubdelphi.com/foros/showthread.php?t=94404)

compuin 26-01-2020 09:34:25

Convertir numeros reales a grados, minutos, segundos
 
Hola amigos como estan?

Como puedo convertir este numero

221.0612010216

a grados, minutos y segundos, para que quede asi

221° 03'' 40'

Utilizo Delphi 7

Muchas gracias de antemano

escafandra 26-01-2020 15:34:25

Código Delphi [-]
function CurrToGra(Val: Extended): AnsiString;
var
  V: Currency;
begin
  Result:= IntToStr(Floor(Val)) + '° ';
  V:= (Val - Floor(Val)) * 60;
  Result:= Result +  IntToStr(Floor(V)) + #39 + #32;
  V:= (V - Floor(V)) * 60;
  Result:= Result +  CurrToStr(V) + #39 + #39;
end;


Saludos.

compuin 26-01-2020 17:05:11

Cita:

Empezado por escafandra (Mensaje 535353)
Código Delphi [-]
function CurrToGra(Val: Extended): AnsiString;
var
  V: Currency;
begin
  Result:= IntToStr(Floor(Val)) + '° ';
  V:= (Val - Floor(Val)) * 60;
  Result:= Result +  IntToStr(Floor(V)) + #39 + #32;
  V:= (V - Floor(V)) * 60;
  Result:= Result +  CurrToStr(V) + #39 + #39;
end;


Saludos.

Muchas gracias,

Tambien necesito convertir ese mismo numero a valor de Hora, minuto y segundo, de esta forma

12h 16' 56"


Saludos

escafandra 26-01-2020 17:13:42

Cita:

Empezado por compuin (Mensaje 535354)
Tambien necesito convertir ese mismo numero a valor de Hora, minuto y segundo, de esta forma

12h 16' 56"

Es idéntico. Sólo cambia '° ' por 'h ' y listo.

Saludos.

compuin 26-01-2020 17:22:21

Cita:

Empezado por compuin (Mensaje 535354)
Muchas gracias,

Tambien necesito convertir ese mismo numero a valor de Hora, minuto y segundo, de esta forma

12h 16' 56"


Saludos

Muchas gracias,

Ya para finalizar, estoy usando esta funcion y me esta devolviendo los segundos en fracciones, pero necesito redondearlos

221° 3' 40.32" asi, 221° 3' 40"


Aca la funcion

Código Delphi [-]
function AngleToStr(angle:extended):string;
var
  D:integer;
  M,S:extended;
  begin
     d:=Trunc(angle);
     m:=abs(frac(angle)*60);
     s:=abs(frac(m)*60);
     m:=int(m);
     Result:=format('%3d° %2d'' %2f"',[d,trunc(m),s]);
end;

escafandra 26-01-2020 17:47:41

Código Delphi [-]
function AngleToStr(angle:extended):string;
var
  D:integer;
  M,S:extended;
begin
  d:=Trunc(angle);
  m:=abs(frac(angle)*60);
  s:=Round(abs(frac(m)*60));
  Result:=format('%d° %d'' %d"',[d, trunc(m), trunc(s)]);
end;


Saludos.

compuin 26-01-2020 17:52:52

Muchisimas gracias,

Funciono perfecto

Casimiro Notevi 26-01-2020 18:04:41

Un 10 para escafandra :)

compuin 26-01-2020 18:08:28

Si, ha sido de mucha ayuda aunque la funcion que me dio para convertir los numeros reales a formato hora, minuto segundo no me funciona correctamente

El valor a convertir es 7.8203608719

me resulta 7h 49' 13"

siendo 12h 16' 56" el valor correcto

Alguna sugerencia ?

escafandra 26-01-2020 18:14:21

Cita:

Empezado por compuin (Mensaje 535361)
Si, ha sido de mucha ayuda aunque la funcion que me dio para convertir los numeros reales a formato hora, minuto segundo no me funciona correctamente

El valor a convertir es 7.8203608719

me resulta 7h 49' 13"

siendo 12h 16' 56" el valor correcto

Alguna sugerencia ?


Es que 7.8203608719 son 7h 49' 13,44''


Saludos.

compuin 27-01-2020 17:46:57

Convertir a grados
 
Hola amigos,

Necesito una funcion para convertir un string, double a grados

Agradezco quien pueda proveermela

Casimiro Notevi 27-01-2020 17:49:23

Hola, no crees un hilo nuevo para preguntar lo mismo, gracias.

compuin 27-01-2020 17:50:51

Lo hice por error

Puedes borrarlo. Gracias

Casimiro Notevi 27-01-2020 17:54:50

¿No has solucionado todavía tu duda? ¿tienes algún problema más con lo que te ha indicado escafandra?

compuin 27-01-2020 17:56:37

Si, lo que pasa es que esa funcion no funciono

Casimiro Notevi 27-01-2020 18:03:03

"No funcionó" no sirve para nada, tienes que decir qué es lo que no funcionó, qué error sale, en qué línea, poner tu código, etc.
No olvides nuestra guía de estilo, gracias.

Casimiro Notevi 27-01-2020 18:07:33

A mí me funciona:



escafandra 27-01-2020 20:17:21

Efectivamente. 7.8203608719 h son 7h 49' 13". Sólo dará otro resultado si el dato dado no son horas, en tal caso y sin más información no se puede dar otra respuesta.

Saludos.

orodriguezca 28-01-2020 15:17:43

Cita:

Empezado por compuin (Mensaje 535361)
Si, ha sido de mucha ayuda aunque la funcion que me dio para convertir los numeros reales a formato hora, minuto segundo no me funciona correctamente

El valor a convertir es 7.8203608719

me resulta 7h 49' 13"

siendo 12h 16' 56" el valor correcto

Alguna sugerencia ?

¿Que tipo de operación o transformación convierte 7.8203608719 en 12h 16' 56"?. Probé haciendo conversiones de decimal a sexagesimal, de decimal a horas e incluso de radianes a grados sexagesimales y en ningún caso obtuve ese resultado. Sería de mucha ayuda saber bajo que circunstancias el resultado correcto es 12h 16' 56".

compuin 28-01-2020 15:53:29

Hola, estaba calculando mal

Finalmente puse la function de esta manera y se corrigio el problema

Código Delphi [-]
function TimeToStr(angle:extended):string;
var
  d : integer;
  m, s : extended;
begin
  d:= Trunc(angle);
  m:= abs(frac(angle)*60);
  s:= Round(abs(frac(m)*60));
  Result:= format('%dh %d'' %d"',[d, trunc(m), trunc(s)]);
end;

Muchas gracias


La franja horaria es GMT +2. Ahora son las 11:34:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi