Newsgroup: it.comp.lang.visual-basic
Titolo: Ore in centesimi

Sto diventando pazzo?
Devo convertire in orario.text la conversione di un ora in centesimi ma non
riesce anzi riesce solo quando immetto un orario con i minuti superiori a 10
ma appena si immette un orario con i minuti inferiori a 10 avviene l'errore.
Io la funzione alla fine l'ho scritta cosi ma non riesco a venirne a capo!
eppure sembra cosi semblice. Non è per caso che ho sbagliato a dichiarare le
variabili?
La funzione sottostante funziona una meraviglia ma solo se l'ora che gli
passo ha i minuti => di 10. Se invece i minuti sono < di 10 sballa il
risultato
Vi faccio un esempio di un errore (es 25,05 deve venire 25,08 ed invece la
seguente funzione mi tira fuori 25,8...) ovviamente non è giusta
Se invece gli passo un ora tipo 45.30 il risultato che mi da (45.50) è
giusto.
----------------------------------------------------------------------------
------------
Public Function oreincentesimi(ora As Double)
----------------------------------------------------------------------------
------------
Dim minuti As String
Dim min As Double
Dim ore As String
Dim centesimi As Double
Dim h As Integer
Dim m As Double
Dim x As Double
   ' Divido la stringa delle ore di volo (sia minuti che ore ) in modo che
dopo
   ' posso sistemarle cambiando l'eventuale punto immesso dall'utente con la
virgola
    ore = Left(ora, 2)
    minuti = Right(ora, 2)
   'Per fare i calcoli le stringhe diventano numeri
    h = CInt(ore)
    m = CDbl(minuti)
    'Devo convertire l'orario in centesimi perchè i calcoli devono essere
fatti con gli
    'orari convertiti in centesimi
    x = (m * 100) / 60
    centesimi = Format(x, "00")
    ora = ore & "," & centesimi
End Function

Premesso che il calcolo lo tiri fuori con una semplice
proporzione
minuti : 60 = x : 100
Function OraInCentesimi(MioIntervallo as Single) as single
    Dim Minuti as Integer
    Minuti = cInt((Intervallo - Int(Intervallo) * 100) * 100 / 60
    OreInCentesimi = Cint(Intervallo) & "," & Minuti
End Function
Questo è quello che devi fare.
Tua sai già che le ore, per quanto espresse in 60esimi, comunque
per te fanno 1 unità, e di conseguenza non necessitano di conversione.
Quello su cui devi lavorare sono solo i minuti e se provi quello
che ti hos critto vedi che i conti ti tornano sempre.
In merito al tuo errore, è chiaro che non potrà mai funzionarti
per il semplice fatto che un 25,05 espresso in centesimi equivale
a 5 per 100 divoso 60 quindi un 8,33 che nella tua ultima
espressione
ora = ore & "," & centesimi
significa avere un double = 25,8,33 ovvero una castroneria per il
tuo pc e quello di tanti altri.
HTH
Andrea

[cut]
prova cosi':
X = CDbl(CDate("20:05:00")) * 24
HTH
bye
r

 ha scritto nel messaggio
news:bs187m$8i1af$1...@ID-61006.news.uni-berlin.de...


 che ti hos critto vedi che i conti ti tornano sempre.
 ...(cut).........

Scusami ti ho postato un pezzo di codice che funziona,
perchè dici che non riesci ad interpretare il mio codice?
Non devi interpretare, ma usare ... hai chiesto l'ora
in centesimi, ed è chiaro anche che devono esserci delle
approssimazioni a l'intero più vicino.
Come ti ho già detto numero con due vigole ancora non
esistono e le ore non devi convertirle, sono già unità per
te ...
Ciao
Andrea

 ha scritto nel messaggio
news:bs937d$actf6$1...@ID-61006.news.uni-berlin.de...
