Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Numeri decimali sempre validi indipendentemente dalla culture del comp...
mercoledì 20 luglio 2016 - 16.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
MySQL 5.5
|
Access (.mdb)
|
Chrome
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mer 20 lug 2016 - 16:56
Salve a tutti
,
recentemente ho incontrato un problema su un mio applicativo winform che gira da anni su 12 postazioni circa...
In una nuova funzione, ho notato che una somma di 2 numeri decimali viene eseguita correttamente su alcuni pc, mentre su altri sballa totalmente come se interpretasse il separatore di decimali al posto del separatore delle migliaia e viceversa....
Ho pensato che questa potesse essere l'unica spiegazione al funzionamento alternato dipendente dalla postazioni, che pure hanno tutte impostate la lingua ITALIANA.
Ora.... io ottengo decimali separati dal punto anzichè dalla virgola perchè cosi sono già pronti per essere inseriti nei vari database su cui scrive la mia applicazione .... i quali invece non digeriscono i decimali con la virgola per cui ho pensato di usarli cosi e tutto funziona tranne per il fatto sopraesposto...
Ora vorrei chiedervi....c'è un modo per far funzionare l'interpretazione di questi maledetti decimali indipendentemente dalla culture del computer in modo che io ottenga sempre e comunque il mio numero come stringa con il puntino come separatore?
Credo di avere fatto un po casino con questa cosa....
Attualmente forzo la CULTURE su italiano all'avvio dell'applicazione...
....in seguito converto sempre i numeri di valute in numero a 2 decimali (con la formattazione breve N2) ed infine sostituisco la virgola con un puntino....
Ditemi voi quale è invece il miglior modo, magari universalmente valido, di procedere, considerato che i database che uso non vogliono la virgola (o almeno alcuni).
Intanto eccovi il codice che uso per fare il conto...che in debug funziona cosi come su molte postazioni...ma in alcune non va...
If txtSpesaTotale.Text = "" Then
txtSpesaTotale.Text = Strings.FormatCurrency((lstBoxQuantitaDaORdinare.Items(i)) * (CDec(strPrezzoAggiunto)))
Else
txtSpesaTotale.Text = Strings.FormatCurrency((CDec(txtSpesaTotale.Text)) + ((lstBoxQuantitaDaORdinare.Items(i)) * (CDec(strPrezzoAggiunto))))
End If
Grazie
************** AGGIORNAMENTO RISOLUTIVO *******************
Dopo giorni di test credo di avere risolto...
Le postazioni dove la somma andava in errore avevano nelle impostazioni internazionali dei numeri il punto come decimale e la virgola come separatore.... questo, unitamente al fatto che sommavo un valore formattato con FormatCurrency (tipo 384,99) con un decimale formattato a decimale (quindi 445.99), veniva fuori un casino...
Ho cambiato il codice facendo tutti i calcoli tra formattazioni identiche, passando quindi il valore ad una variabile dichiarata come DECIMAL, sommando le due cifre formattate come decimal con CDEC e solo alla fine formattando il valore finale con la FormatCurrency.
Cosi, il calcolo lo faccio sempre e comunque come decimale, e alla fine formatto in valuta...quindi anche per CULTURE diverse il risultato dovrebbe essere sempre assicurato e corretto.
Torna su
Stanze Forum
Elenco Threads
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 !