2013-02-25 14 views
5

Desidero analizzare un valore double in un string. Voglio che il mio numero abbia un numero specificato di cifre (che non conoscerò fino al runtime). Se questo numero può essere espresso con un valore diverso da zero in numero di cifre, questo è quello che voglio. Se il numero risulta uguale a zero, lo voglio espresso in notazione scientifica.Utilizzare la notazione scientifica solo se necessario

Alcuni esempi renderanno questo più chiaro, questo presuppone che volevo 3 cifre:

Valore: 0,2367 uscita: "0,23"

Valore: 0,00,367 mila uscita: "3.67E-3"

Valore: 22,3 Uscita: "22.3"

Valore: 3.364,0 uscita: "3.36E3"

Il mio lavoro intorno soluzione sarebbe utilizzare il metodo ToString() e la Nnumeric format string e se il risultato e 'pari a zero di ripristinare la stringa di formato E, ma questo sembra di reinventare la ruota. Qualcuno sa se un metodo integrato per fare questo?

+2

non si vuole 2.37E-1 per il primo? –

+0

In realtà la mia preferenza sarebbe usare solo la notazione scientifica se tutti i valori fossero 0, ma in entrambi i casi sarebbe sufficiente. – Fr33dan

risposta

14

Hai guardato usando lo General Number Format Specifier?

Il generale ("G") di formato converte un numero più compatto o-punto fisso o notazione scientifica, a seconda del tipo del numero e se uno specificatore di precisione è presente.

Alcuni campioni dalla documentazione:

double number; 

number = .0023; 
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture)); 
// Displays 0.0023 

number = 1234; 
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture)); 
// Displays 1.2E+03 

number = Math.PI; 
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture)); 
// Displays 3.1416 
+0

Non so come sono riuscito a trascurare questo nella documentazione. – Fr33dan

Problemi correlati