Domanda

Ho la seguente stringa: "3.39112632978e + 001", che ho bisogno di convertire a stare a galla. WolframAlpha dice che il risultato di questo valore è 33,9112,632978 millions che evidentemente dovrei ottenere in qualche modo e non riuscivo a capire come.

Single.Parse("3.39112632978e+001") gives 3.39112624E+12

Double.Parse("3.39112632978e+001") gives 3391126329780.0

float.Parse("3.39112632978e+001") gives 3.39112624E+12

Che cosa devo fare?

È stato utile?

Soluzione

Si verifica un problema di localizzazione in cui il . viene interpretato come separatore di migliaia anziché come separatore decimale. Sei in, diciamo, in Europa?

Prova questo:

float f = Single.Parse("3.39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(f);

Output:

33.91126

Si noti che se si sostituisce l'. da un , poi vediamo il comportamento che si verifica:

float g = Single.Parse("3,39112632978e+001", CultureInfo.InvariantCulture);
Console.WriteLine(g);

Output:

3.391126E+12

Questo sostiene la mia convinzione che si sta verificando un problema di localizzazione.

Altri suggerimenti

Credo che, questa discussione dà suggerimenti alla tua domanda: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e482cda0-6510-4d2c-b830-11e57e04f65d (e System.Globalization.NumberStyles.Float è uno dei le cose fondamentali qui - cambia il modo il . viene interpretato)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top