Come convertire la stringa con esponente a stare a galla?
-
19-09-2019 - |
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?
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)