Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB6] Problemi a gestire le percentuali di numeri decimali

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB6] Problemi a gestire le percentuali di numeri decimali

Messaggioda Zane » lun mag 02, 2005 5:01 pm

Ciao a tutti.

Ho un porblemino a calcolare il 20% di un numero decimale.

Ecco la mia funzione.

Codice: Seleziona tutto
Public Function Percentuale(ByVal valore As Variant, ByVal perc As Variant) As Variant
    MsgBox valore
    MsgBox perc
    Dim pippo As Double
    pippo = (valore * perc) / 100
    Percentuale = pippo
End Function


Chiamo questa funzione con

Codice: Seleziona tutto
percentuale(541.63,20)


Il cui risultato esatto dovrebbe essere 108.326. I msgbox mostrano correttametne i valori passati, ma la funzione mi ritorna un inspiegabile 10832,6

QUalche idea?
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Zane » lun mag 02, 2005 5:03 pm

Ok, popolo di megalabbari, mentre scrivevo ho trovato la soluzione.

Il problema è che VB vuole la virgola come separatore delle decine, al contrario di SQL, che vuole il punto per funzionare correttamente (che bello stabilire una convenzione al di fuori delle abitudini dei singoli paesi ed usare sempre quella...)

E' bastato sostutire l'input della funzione percentuale con una chiamata di questo tipo

Codice: Seleziona tutto
percentuale(replace("541.63", ".", ","),20)


E tutto funzione correttamente!
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Silver Black » lun mag 02, 2005 11:32 pm

Zane ha scritto:Il problema è che VB vuole la virgola come separatore delle decine, al contrario di SQL, che vuole il punto per funzionare correttamente (che bello stabilire una convenzione al di fuori delle abitudini dei singoli paesi ed usare sempre quella...)


Attento: VB non è che vuole la virgola, VB vuole il separatore decimale impostato nella "Impostazioni Internazionali" di Windows. Se adesso sostituisce il punto con la virgola come fai e porti il tuo programma su un PC settato con il metodo anglosassone (in pratica come SQL), il tuo programma non funzionerà.

Quindi dovresti, per avere un programma perfetto: prima beccare il separatore decimale (per farlo esegui una banale operazioni sulle stringhe, per esempio fai 3 div 2, converti in stringa e becchi il 2° carattere da sinistra, sarà il separatore decimale impostato), dopodichè sostituire con quello il "." del valore di cui trovare la percentuale.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Robby78 » mar mag 03, 2005 8:28 am

Vero, infatti mi ripropongo da tempo di installare S.O e ambiente di sviluppo, database e accidenti vari tutti in inglese.... non potete immaginare quanti problemi e perdite di tempo mi capitano con queste dannate impostazioni internazionali!!! (per non parlare dei formati delle date..... [acc] )
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Zane » mar mag 03, 2005 10:30 am

Robby, il pacco è che io ho già so+vb inglese, ma le impostazioni di default vengono prese da "impostazioni internazionali" del so, che devo tenere x forza in ita.

Grazie Silver per la precisazione!
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising