Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: LeandroA en 5 Marzo 2013, 20:17 PM

Título: [Solucionado]Problemas para crear función Decimal a Grados Minutos Segundos
Publicado por: LeandroA en 5 Marzo 2013, 20:17 PM
Hola como dice el titulo quiero crear una función que pase un numero decimal a grados minutos segundos.

la cuenta es fácil consiste en tomar un numero por ejemplo como este 32.4525 la parte entera es el grado (32) la parte decimal se la multiplica por 60 (0.4525 x 60) eso da como resultado 27,15 la parte entera son los minutos (27), y a la parte decimal se la multiplica por segundos 0.15 x 60 el resultado de eso ( 9) son los segundos (este ultimo puede tener decimales.)

[youtube=640,360]http://www.youtube.com/watch?v=xSiRqKNkuTI[/youtube]

esta es la función que hice pero no funciona bien

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
   Dim G As Double, M As Double, S As Double

   DecimalToGMS 32.4525, G, M, S
   Debug.Print G, M, S  '32.4525 = 32 Grados,27 Minutos,9 Segundos
   
   DecimalToGMS 61.0125731667, G, M, S
   Debug.Print G, M, S  '61.0125731667 = 61 Grados,0 Minutos,45.2633999976 Segundos
End Sub


Private Function DecimalToGMS(Value As Double, Grado As Double, Minuto As Double, Segundo As Double)
   Dim Absolute As Double
   Dim sRet As String
   Dim lPos As Long
   Dim pEntera As Double, pDecimal As Double
   
   
   
   Absolute = Abs(Value)

   pEntera = Fix(Absolute)
   pDecimal = Absolute - pEntera
   
   Grado = pEntera
   Absolute = pDecimal * 60

   pEntera = Fix(Absolute)
   pDecimal = Absolute - pEntera
   
   If pEntera <> Absolute Then
       Minuto = pEntera
   End If
   
   Segundo = pDecimal * 60

End Function


aqui tienen una pagina para testear los resultados (funciona bien)
http://convertir-grados-decimales-a-grados-minutos-y-segundos.todala.info/

intente utilizar el valor como una cadena de texto pero tengo el problema cuando en la parte de multiplicar los segundos no hay decimales,
si lo tratan como una cadena de texto tengan en cuenta que según la configuración local el punto podría ser una coma.

Título: Re: Problemas para crear función Decimal a Grados Minutos Segundos
Publicado por: LeandroA en 5 Marzo 2013, 20:29 PM
Creo que esta andando bien ahora mmm por las dudas que alguien la testee.

EDIT 2 si funciona bien era un problema de copy and paste de un numero, me volvio pelotudo  :¬¬

61,0125731666667
61.125731666667
Título: Re: [Solucionado]Problemas para crear función Decimal a Grados Minutos Segundos
Publicado por: MCKSys Argentina en 5 Marzo 2013, 20:39 PM
Acordate de usar Val para evitar los quilombos con el separador  decimal...
Título: Re: [Solucionado]Problemas para crear función Decimal a Grados Minutos Segundos
Publicado por: Danyfirex en 5 Marzo 2013, 20:54 PM
Me funciona perfectamente.