2012-06-20 15 views
20

Voglio fare una funzione che prende un valore inserito e lo converte in notazione scientifica (N x 10^a)Come posso convertire i numeri in notazione scientifica?

Ho provato molte cose diverse, ma non riesco a farlo bene.

Esempio:

I immettere 200. Il convertitore converte in 2 x 10^2

+2

Mostraci cosa hai provato. –

+0

Vorrebbero anche informazioni più specifiche. cioè quante cifre significative è il massimo? 2.121.212 -> 2 x 10^6 o 2.1 x 10^6 ecc ecc? Qual è il "cut-off", immagino – Sephallia

risposta

50

Si può fare qualcosa di simile:

a = 200 
a.toExponential(); //output 2e+2 

violino: http://jsfiddle.net/Q8avJ/9/

+1

Wow, non sapevo che esistesse :) –

+0

Wow, non sapevo nemmeno che esistesse :) – Amadan

+1

Fantastico! Ma c'è un modo per farlo nella forma N x 10^a? Posso ancora accontentarmi di questo, però! – Samar

1

Se si desidera un formato di base 10 come questo:

m x 10 n

Quindi è possibile utilizzare una funzione come questa:

function writeScientificNum(p_num, p_precision) { 
    var n = Math.round(Math.log10(a)); 
    var m = (p_num * (Math.pow(10,Math.abs(n)))).toFixed(p_precision); 
    document.getElementById("outputTxt").innerHTML = m.toString() + ' x 10<sup>' + n.toString() + '</sup>'; 
} 

provarlo: http://jsfiddle.net/u1hd4zm9/

L'unica cosa strana è che il metodo toFixed (in Chrome almeno) non arrotonderà le metà esatte, ma verso il basso. Ad esempio se si esegue questo codice:

var test = 2.55; 
alert(test.toFixed(1)); 

Stampa '2.5' e non '2.6' come previsto. Tuttavia se si esegue questo codice:

var test = 2.5; 
alert(test.toFixed(0)); 

Stampa 3. Quindi, tenete presente.

Problemi correlati