Ho una stringa che contiene qualcosa del genere: 15,35 €
Come faccio a convertire la stringa in float?
Ho una stringa che contiene qualcosa del genere: 15,35 €
Come faccio a convertire la stringa in float?
Usa il metodo Parse:
codice:Dim s As String Dim f As Single s = "15,35 €" f = Single.Parse(s, Globalization.NumberStyles.Currency) Console.WriteLine(f)
Chi non cerca trova.
preferirei non usare currency perché se non sbaglio mette la valuta in base al sistema operativo
Ma infatti ho usato single...
Chi non cerca trova.
ah...e quindi posso accodare € tranquillamente, indipendentemente dal SO/Valuta ecc...?
Provato, ma mi da questi problemi:
1) Se devo convertire 15.5, mi restituisce 15.5, ma invece vorrei 15.50
2) Se devo covertire 0.02, mi restuisce 2
La prima non mi interessa molto, ma la seconda è assai grave
Se nelle impostazioni internazionali del tuo Windows (Pannello di controllo/Opzioni internazionali e della lingua) è specificato che la parte decimale di un numero è separata da quella intera con il carattere virgola, ci sarà pure un motivo!
Se in un textbox scrivi 15.5 (e non 15,5) la funzione Parse (come pure altre metodi impliciti del linguaggio) trasformerà il numero in 155 in quanto il punto è visto come il separatore delle migliaia.
Se provi l'esempio che ti ho dato nel post precedente, vedrai che se scrivi la stringa "15,5 €" verrà convertito correttamente in 15,5 (single). Stessa cosa dicasi con "0,02 €".
Mi sembra comunque che fai una cerca confusione tra stringhe e numeri, in particolare la tua affermazione "...mi restituisce 15.5, ma invece vorrei 15.50" è alquanto significativa.
Allora ti dico che:
- tutti i calcoli tra numeri devono essere eseguiti utilizzando i tipi numerici (Integer, Single, Double, Decimal, ecc.)
- ti preoccuperai della formattazione del numero (caratteri di valuta, numero di decimali ecc.) solo al momento dell'output a video o su carta (usando opportunamente la funzione Format)
- se devi memorizzare in un database dei numeri, usa i tipi numerici messi a disposizione dal database (corrispondeno di massima con i tipi definiti nel linguaggio)
Come consiglio spassionato, per gestire le valute usa il tipo Decimal (oppure Currency in VB6) in quanto Single e Double possono in certi casi introdurre pericolosi errori di arrotondamento.
Ciao
Chi non cerca trova.
ma decimal (o currency) non sono strettamente legate alle impostazione del so? io voglio fare una cosa universale...
Se vuoi scrivere qualcosa di universale è meglio se ti orienti verso un altro linguaggio (java per esempio): la piattaforma .NET è relativa solo al mondo Windows (esiste in verità anche MONO per Linux, ma la compatibilità non è al 100%).
Chi non cerca trova.