Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - metodo ToDouble() della classe Convert
Forum - C# / VB.NET - metodo ToDouble() della classe Convert

Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 15:32
Lunedì, 08/06/2009
Questo topic è stato chiuso dal moderatore

ciao, nello sviluppo del mio programma mi sono accorto di questa stranezza


            string text = "10.123";
            double value = Convert.ToDouble(text);
            Console.WriteLine(value);
            Console.ReadLine();

questo restituisce "10123"



            string text = "10,123";
            double value = Convert.ToDouble(text);
            Console.WriteLine(value);
            Console.ReadLine();

questo invece restituisce "10,123"


ma il simbolo della virgola matematica non è il punto? Il debugger ad esempio mi mostra questi valori con il punto

PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 17:45
Lunedì, 08/06/2009
per il primo caso, i computer non usano il segno delle migliaia quindi i numeri vengono visualizzati senza di esso

per il secondo posso ipotizzare che la toDouble, non riuscendo a convertire una cosa che non è un numero, la lasci così com'é ma è solo un'ipotesi

PM
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 18:13
Lunedì, 08/06/2009
nono assolutamente.... dovrebbe darti errore... ed è strano che non dia errore infatti... a meno che non fa la conversione implicita...

prova a scrivere sopra dove si mettono imports etc etc

option explicit off

e poi prova pure con on... nn mi ricordo quale dei 2 è il default

dovrebbe darti errore stavolta

Ultima modifica effettuata da GoLDBeRG il 08/06/2009 alle 18:14
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 18:56
Lunedì, 08/06/2009
la mia era solo un'ipotesi dato che non sapevo quello che poteva succedere ma scusa se te lo chiedo.....option explicit non è solo di vb.net? si può mettere anche in c#?

Ultima modifica effettuata da lorenzo il 08/06/2009 alle 18:57
PM
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 19:38
Lunedì, 08/06/2009
vb.net e c#.net hanno gli stessi costrutti le stesse funzioni etc etc solo che uno è c e uno visual basic pero' cmq è uguale

PM
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 19:48
Lunedì, 08/06/2009
"10.123" il punto non sta per le migliaia ma virgola (in senso matematico); perfino le calcolatrici usano il simbolo del punto.

il Convert.Todouble ignora completamente il punto

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 11:53
Martedì, 09/06/2009
Testo quotato

Postato originariamente da GoLDBeRG:

vb.net e c#.net hanno gli stessi costrutti le stesse funzioni etc etc solo che uno è c e uno visual basic pero' cmq è uguale



Non è vero: gli Option vari possono essere usati solo in vb(.net)(quindi niente Option Explicit)
E poi il My dove lo metti?

Ultima modifica effettuata da manvb.net il 09/06/2009 alle 11:56
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:30
Martedì, 09/06/2009
Nel codice VB/C#, il separatore decimale è il punto. Nelle conversioni da stringa, il separatore è la virgola, mentre il punto è il separatore delle migliaia.
Queste convenzioni variano al variare della cultura correntemente utilizzata (espressa da un oggetto di tipo CultureInfo che è ottenibile da Application.CurrentCulture): quella usata per la conversione rispecchia le convenzioni usate nei paesi di lingua anglofona, e viene comunemente rappresentata con le costanti "en-US" (America) ed "en-GB" (Inghilterra).

PM
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 19:48
Martedì, 09/06/2009
grazie dell'esauriente risposta

PM