Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Rappresentazione numeri float c#
giovedì 24 settembre 2009 - 15.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
blackorchid
Profilo
| Newbie
19
messaggi | Data Invio:
gio 24 set 2009 - 15:21
Devo lavorare massicciamente con dei numeri con la virgola e alcune volte questi sono stringhe che devo convertite nella reppresentazione numerica, altre volte devo fare operazioni tra di loro.
Su Intel E8700
Se scrivo :
double virg10 = Convert.ToDouble("2.1"), virg20 = Convert.ToDouble("3.2");
Console.WriteLine(virg10 + " + " + virg20 + " = " + (virg10 + virg20));
Ottengo : 21+32=53
Se scrivo :
double virg1=Convert.ToDouble("2,1"),virg2=Convert.ToDouble("3,2");
Console.WriteLine(virg1 + " + " + virg2 + " = " + (virg1 + virg2));
Ottengo : 2,1+3,2=5,3
Su AMD Phenom II x4
Se scrivo:
double virg10 = Convert.ToDouble("2.1"), virg20 = Convert.ToDouble("3.2");
Console.WriteLine(virg10 + " + " + virg20 + " = " + (virg10 + virg20));
Ottengo : 2.1+3.2=5.3
Se scrivo
double virg1=Convert.ToDouble("2,1"),virg2=Convert.ToDouble("3,2");
Console.WriteLine(virg1 + " + " + virg2 + " = " + (virg1 + virg2));
Ottengo : errore di formato di input
Tutti gli altri linguaggi utilizzano il . (punto) per la notazione decimale. Il tipo float mi funziona utilizzando il formato:
float num=2.4f;
ma non riesco a convertire una stringa della forza "2.3" in un numero float
Qualcuno sa dirmi cosa dovrei fare?
phai
Profilo
| Newbie
19
messaggi | Data Invio:
gio 24 set 2009 - 18:14
>Devo lavorare massicciamente con dei numeri con la virgola e
>alcune volte questi sono stringhe che devo convertite nella reppresentazione
>numerica, altre volte devo fare operazioni tra di loro.
>
>Su Intel E8700
>
> Se scrivo :
>double virg10 = Convert.ToDouble("2.1"), virg20 = Convert.ToDouble("3.2");
>Console.WriteLine(virg10 + " + " + virg20 + " = " + (virg10 +
>virg20));
> Ottengo : 21+32=53
> Se scrivo :
>double virg1=Convert.ToDouble("2,1"),virg2=Convert.ToDouble("3,2");
>Console.WriteLine(virg1 + " + " + virg2 + " = " + (virg1 + virg2));
> Ottengo : 2,1+3,2=5,3
>
>
>Su AMD Phenom II x4
>
> Se scrivo:
>double virg10 = Convert.ToDouble("2.1"), virg20 = Convert.ToDouble("3.2");
>Console.WriteLine(virg10 + " + " + virg20 + " = " + (virg10 +
>virg20));
> Ottengo : 2.1+3.2=5.3
>
> Se scrivo
>double virg1=Convert.ToDouble("2,1"),virg2=Convert.ToDouble("3,2");
>Console.WriteLine(virg1 + " + " + virg2 + " = " + (virg1 + virg2));
> Ottengo : errore di formato di input
>
>
A prima vista sembrerebbe un che si tratti di differenza di processore, o di impostazioni internazionali di sistema.
In ogni modo potrebbe essere del tutto lecita... hai provato a guardare la documentazione ufficiale del metodo che usi?
>Tutti gli altri linguaggi utilizzano il . (punto) per la notazione
>decimale. Il tipo float mi funziona utilizzando il formato:
>float num=2.4f;
>ma non riesco a convertire una stringa della forza "2.3" in un
>numero float
>
Anche in altri linguaggi come Java il float si indica con la "f" alla fine, quello è abbastanza normale nei linguaggi fortemente tipizzati di ultime generazioni.
>
>Qualcuno sa dirmi cosa dovrei fare?
Mi domando: ma perché non usi il metodo statico Parse della classe Double: Double.Parse("3.2")?
blackorchid
Profilo
| Newbie
19
messaggi | Data Invio:
gio 24 set 2009 - 22:52
Il problema erano le impostazioni internazionali. Le impostazioni italiane settano la virgola come delimitatore dei decimali mentre quelle internazionali considerano il punto.
Ci sono arrivato dopo averle provate tutte. Ricompilare, Double.Parse("2.3") e tutte le combinazioni possibili.
Grazie del suggerimento
Torna su
Stanze Forum
Elenco Threads
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 !