Formattare label con valuta euro in valuta americana

lunedì 15 febbraio 2010 - 16.25

ravalon Profilo | Expert

Salve,
ho una label con una valuta in Euro, formattata con Cdec(label.text)

Mi servirebbe formattarla in valuta americana per paypal (cioè 1.736,50 € diventerebbero 1,736.00)
...ma non ci riesco....

ridaria Profilo | Expert

toglici nella versione in euro il separatore delle migliaia, avrai quindi:
1736,50

poi a questa stringa con un rplace gli sostituisci la virgola con il punto.

che ne pensi?


Meglio ancora:

non formattare la tua valuta con cDEC, ma con cDbl così ottieni direttamente la cifra senza il separatore delle migliaia.
Ti consiglio di usare il separatore delle migliaia solo per cifre allo stadio finale cioè quando sono solo destinate ad essere lette e non in fasi preliminari intermedie quando su di esse devi eseguire calcoli ed operazioni, quel punticino ti garantisco che rompe.




Ciao



Riccardo D'Aria

ravalon Profilo | Expert

Ok funziona.....ma non è che se non metto la virgola poi avrò altri tipi di problemi ??

Questa cosa la faccio perchè devo mandare un campo Hidden a PayPal....e vuole il formato americano....

E se avessi 1758,50 € non è che togliendo la virgola avrò problemi ??

Va beh...domani faccio due prove....intanto grazie

ridaria Profilo | Expert

>Ok funziona.....ma non è che se non metto la virgola poi avrò
>altri tipi di problemi ??
>
>Questa cosa la faccio perchè devo mandare un campo Hidden a PayPal....e
>vuole il formato americano....
il formato americano prevede il punto come separatore dei decimali, quindi devi sostituire alla virgola il punto.



>
>E se avessi 1758,50 € non è che togliendo la virgola avrò problemi
questo è il formato europeo, con la virgola come separatore dei decimali.

il formato americano è: 1758.50


>Va beh...domani faccio due prove....intanto grazie
CIAO
Riccardo D'Aria

ravalon Profilo | Expert

Quello che intendevo era questo....

non è che poi paypal usando questo formato americano mi vuole la cifra scritta cosi

1,736.50

anzichè 1736.50 ?

Perchè in quel caso non potrei fare il replace di tutte le virgole...comunque oggi provo sennò è inutile che vi assilli

ridaria Profilo | Expert

non credo che sia necessario il separatore dei decimali.
A meno che quelli di pay pall non sono diventati scemi.

Il separatore delle migliaia è una convenzione che noi umani usiamo per rendere meglio leggibili le cifre, o c'è o non cè non cambia niente per chi deve farci delle operazioni.

é bene però sapere che se lo si vuol mettere che venga messo secondo la giusta sintassi, o il punto se siamo europei o la virgola se sono americani. Altrimenti se lo sbagli il sistema che lo elabora lo scambia per tutt'altro numero.

Rileggi il consiglio che ti ho dato prima,

metti il separatore delle migliaia solo se il dato deve essere LETTO da un essere umano.

:-)

CIAO
Riccardo D'Aria

ravalon Profilo | Expert

Ok ti ringrazio ....ti faccio sapere

sankyu Profilo | Senior Member

è abbastanza semplice se usi il framework: http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx
crea un oggetto cultureinfo ed utilizza le funzioni di parse per trasformarlo in double e poi da double lo riporti a stringa usando un oggetto cultureinfo della cultura di destinazione.

esempio:
Dim i As Integer = 100

' Creates a CultureInfo for English in Belize.
Dim bz As New CultureInfo("en-BZ")
' Displays i formatted as currency for the bz.
Console.WriteLine(i.ToString("c", bz))

' Creates a CultureInfo for English in the U.S.
Dim us As New CultureInfo("en-US")
' Displays i formatted as currency for us.
Console.WriteLine(i.ToString("c", us))

' Creates a CultureInfo for Danish in Denmark.
Dim dk As New CultureInfo("da-DK")
' Displays i formatted as currency for dk.
Console.WriteLine(i.ToString("c", dk))
End Sub

la stessa cosa la puoi fare con un double

ravalon Profilo | Expert

Molto interessante !

Però senti.....dici che è bene fare cosi perchè sennò ho problemi oppure va benone anche se uso il semplice REPLACE ?

ridaria Profilo | Expert

Usa il replace senza star li a montare cose strane.

Tutte ste storie per eliminare un punto!!!

Poi con o senza separatore delle migliaia, un numero resta sempre tale!

é una questione di formattazione per gli esseri umani!!!

Anzi in alcuni casi se il sistema che elabora i numeri in questione, non prevede il separatore delle migliaia, va in tilt quando trova quel simbolo.

CIAo
Riccardo D'Aria

ravalon Profilo | Expert

Ok ti ringrazio !

sankyu Profilo | Senior Member

oddio occhio!!! io non userei il replace sarà che lavoro per una banca!!! ma se qualcuno inpazzisce e ti inserisce un importo mal formattato tipo

1,324,342.34 che ha pure senso in un altra lingua il tuo sistema con il replace manda una cosa del tipo 1.324.342.34 che non so se ha paypal piace!!

il framework è vasto ma col tempo va studiato ed imparato non andrebbero fatte le cose tanto per fare perchè prima o poi quello che oggi salti ti può tornare utile!!!

ravalon Profilo | Expert

Anche questa è una corretta osservazione....

Però c'è da dire che l'utente NON PUO' inserire alcuna cifra a mano.... il totale deriva dalla somma dei prodotti nel carrello per cui credo che questo problema non si possa verificare....altrimenti si, avresti ragione....

Sei d'accordo o secondo te ci può essere un caso che sfugge alla mia attenzione ?3

Grazie per il tuo intervento comunque !

ridaria Profilo | Expert

>oddio occhio!!! io non userei il replace sarà che lavoro per
>una banca!!! ma se qualcuno inpazzisce e ti inserisce un importo
>mal formattato tipo
>
>1,324,342.34 che ha pure senso in un altra lingua il tuo sistema
>con il replace manda una cosa del tipo 1.324.342.34 che non so
>se ha paypal piace!!
Se il mio sistema fa i dovuti controlli!!! come deve farsi sui dati in imput, si verifica che la stringa che hai indicato non è un numero:
If isNumeric(1,324,342.34) non è un numero in un sistema operativo settato per europa, per indenterci i nostri S.O. e quindi ti respinge l'inserimento. E quindi ilproblema che hai posto non sussiste se alla base ci sono le regole di programmazione.

Ciò e sempre vero anche sto su un server son S.O cinese, devo sapere il sistema operativo come tratta i dati, prima di cominciare a scrivere mezzariga di codice.

Poi dato che si parla di prezzi credo che nel 99% dei casi sono dei dati di sistema inseriti da un amministratore e quindi ......., una cazzata come il numero che hai scritto tu è difficile che venga inserita, bhè a pensarci, nelle bancha forse di def.... figli di papà che hanno ereditato il posto ce ne sono, ne conosco molti.


Si presume che chi scrive del codice sa su che sistema operativo giri il suo codice, su che database vanno riposti i dati.





>
>il framework è vasto ma col tempo va studiato ed imparato non
>andrebbero fatte le cose tanto per fare perchè prima o poi quello
>che oggi salti ti può tornare utile!!!
Un pò di logica e di conoscenza sono meglio di un manuale .net imparato a memoria.


Riccardo D'Aria

ravalon Profilo | Expert

Come dicevo anche io i dati non sono inseriti dall'utente ma vengono dai prezzi dei prodotti aggiunti al carrello....

ridaria Profilo | Expert

>Come dicevo anche io i dati non sono inseriti dall'utente ma
>vengono dai prezzi dei prodotti aggiunti al carrello....


ok dai chiudi questo post se è tutto risolto

CIAO

Riccardo D'Aria

sankyu Profilo | Senior Member

Il controllo dei dati come lo fai? Spero non in javascript, noi le validazioni degli input le facciamo almeno tre volte: lato client javascript,lato server asp.net e lato db sql server comunque sia. Proprio applicando il sistem.globalization puoi fare un applicazione in grado di validare ogni input con pochi sforzi. Queste tre validazioni secondo me sono essenziali poi se usi ar chitetture ntier ogni tier dovrebbe avere il suo validator

ravalon Profilo | Expert

La validazione non esiste perchè non ve n'è bisogno....i prezzi sono preimpostati, le quantità sono selezionabili da controlli specifici....l'utente non può agire sul prezzo in nessun modo, può solo scegliere prodotto, spedizione, tipo di pagamento....cliccando su controlli ASP.NET...

...ad ogni modo in ASP.NET controllo i valori passati, onde intercettare eventuali errori

sankyu Profilo | Senior Member

be a questo punto chiedo venia!!!!
niente da obiettare!!

ravalon Profilo | Expert

Nessun problema, anzi ti ringrazio per esserti interessato
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5