Rappresentazione numeri float c#

giovedì 24 settembre 2009 - 15.21

blackorchid Profilo | Newbie

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

>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

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
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5