Problemi con valori double e stringhe

martedì 19 aprile 2005 - 15.33

SuperSasch2004 Profilo | Newbie

Ho un piccolo problema con la formattazione delle stringhe ...
Vi spiego prendo l'importo di una fattura da un campo text di nome TbImporto

Dim totaleFat As Double
totaleFat = Val(TbImporto.Text)

già qui ho un primo problema ... perchè noi italiani usiamo la virgola (,) come separatore dei centesimi (tipo 3,00) mentre val come separatore usa il punto (.) (tipo 3.00)

perciò risolvo questo piccolo problema con

totaleFat = Val(Replace(TbImporto.Text, ",", "."))

bene ora ho la mia variabile di tipo double dove posso fare tutti i miei bellissimi calcolini ... tipo

totaleFat = ( totaleFat * 0,2 ) + totaleFat

poi devo stampare questa stringa ... e qui mi servo della cara funzione ToString che accetta anche come parametro come formattare il dato di tipo double ...
perciò faccio

TbTotaleFattura.Text = totaleFat.tostring("0.00")

e perciò se ho un numero 123.567 me lo restituisce come una stringa 123.56
ma qui riscappa fuori il solito problema ... ovvero nou usiamo la virgola e non il punto, perciò

TbTotaleFattura.Text = Replace(totaleFat.tostring("0.00"),".",",")

ed ecco che scappa fuori il mio caro bel numerino ...
tante volte mica conoscete un scorciatoia ?? e poi vi volevo chiedere come fare a mettere, quando formatto la stringa, oltre al separatore dei centesimi anche quello delle migliaia...

vi ringrazio anticipamente ...

Brainkiller Profilo | Guru

Dovrebbe essere più facile del previsto.
Il Framework dovrebbe appoggiarsi se non sbaglio alle impostazioni del sistema operativo. Tu per caso hai impostati i criteri americani ?

In ogni caso se nel form load scrivi:

Thread.CurrentThread.CurrentCulture=new CultureInfo("it-IT");

Ciò dovrebbe cambiare la cultura corrente del Thread dell'applicazione e quindi tutto ciò che esce dopo questa istruzione dovrebbe essere in formato italiano.
Tutto ciò funziona dopo aver referenziato il namespace System.Globalization

Facci sapere se risolvi.
ciao
david

martinmystero Profilo | Newbie

Puoi + semplicemente usare il metodo shared Format della classe String ...
esempio:
totaleFat = String.Format("{0:N}", totaleFat)

se controlli il suddetto metodo trovi sicuramente quello che + soddisfa i tuoi bisogni e puoi anche personalizzare eventuale visualizzazione .
Ciauz
;)

martinmystero Profilo | Newbie

... dimenticavo l'ultimo passaggio,
totaleFat = String.Format("{0:N}", totaleFat)
'.. le tue elaborazioni di somma
e poi per passarlo in stringa mantenendo la virgola usi

TotaleFattura.string=Decimal.parse(TotaleFat)
ciao
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5