Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
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


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
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


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
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).


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
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