Conversione

giovedì 22 novembre 2007 - 16.44

cispolo.ppl Profilo | Senior Member

Salve, qualcuno sa come convertire da decimali a gradi e viceversa in vb?
Massimo

alextyx Profilo | Expert

Cioè?
Per esempio a quanti gradi corrisponde una pendenza del 50%, o cos'altro?
Un rapporto tra grandezze omogenee in un angolo (arcoseno)?
Prova a spiegare meglio cosa vuoi fare, magari si trova la soluzione.

cispolo.ppl Profilo | Senior Member

esempio: 1.5 ore corrispondono a 1 : 30 ore
Massimo

Teech Profilo | Expert

Non è una conversione ma un formato di visualizzazione.
Una Data ed un'ora sono comunque numeri...

controlla questo link
http://msdn2.microsoft.com/it-it/library/59bz1f0h(VS.80).aspx


--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alextyx Profilo | Expert

Mah....non so perchè ti riferivi ai gradi, visto che qui si parla di minuti. Comunque per risolvere il tuo esempio, dovresti poter usare due semplici funzioni come queste:

''' <summary>
''' Vuole in input un valore in formato numerico e lo restituisce numerico, trasformato in sessagesimale (solo la parte frazionaria)
''' </summary>
Private Function ConvertiDecimaleInSessagesimale(ByVal DaConvertire As Double) As Double
Dim ParteIntera As Double = Math.Floor(DaConvertire)
Dim ParteFrazionaria As Double = DaConvertire - ParteIntera
ParteFrazionaria = Math.Round(ParteFrazionaria * 60) / 100
Return ParteIntera + ParteFrazionaria
End Function

''' <summary>
''' Vuole in input un valore stringa che rappresenta un intero e un decimale, separati da virgola. tipo 'x,y' es.: '10,2' '9874,056'
''' Il separatore può essere impostato anche con un carattere diverso da virgola.
''' Restituisce una stringa che rappresenta il valore in formato sessagesimale (solo per la parte frazionaria)
''' </summary>
Private Function ConvertiDecimaleInSessagesimale(ByVal DaConvertire As String, Optional ByVal Separatore As Char = ","c) As String
Dim ParteIntera As Integer = CInt(DaConvertire.Split(Separatore)(0))
Dim ParteFrazionaria As Double = Double.Parse(DaConvertire.Split(Separatore)(1))
ParteFrazionaria = Math.Round(ParteFrazionaria * 60) / 100
Return ParteIntera.ToString & ":" & ParteFrazionaria.ToString
End Function

Una accetta un valore stringa e l'altra un valore numerico. Occhio che non sono stato a mettere anche i controlli di errore! Spero funzionino bene, sono state fatte un po' di fretta. Fammi sapere. Ciao.

cispolo.ppl Profilo | Senior Member

Grazie per l'aiuto...ma avrei un piccola domanda. Se metto 12.5 lo trasforma in 12:3, mi aspetto 12:30. Come posso sistemarlo?
Massimo

alextyx Profilo | Expert

Modifica la riga aggiungendo un PadRight, così:
Return ParteIntera.ToString & ":" & ParteFrazionaria.ToString.PadRight(2, "0"c)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5