javascript - reglas - ¿Cómo puedo convertir números en notación científica?
operaciones con notacion cientifica (3)
En algún momento quise usar el coeficiente y el exponente como números.
Si desea hacerlo, puede usar la función toExponential
, dividir la cadena y convertir los elementos de la matriz en números.
En el siguiente fragmento, asigno los números al objeto numInSciNot
y los numInSciNot
en el formato deseado.
const num = 200;
const numInSciNot = {};
[numInSciNot.coefficient, numInSciNot.exponent] =
num.toExponential().split(''e'').map(item => Number(item));
console.log(`${numInSciNot.coefficient} x 10^${numInSciNot.exponent}`);
Si no quiere usarlos como números, solo puede usar replace
:
const num = 200;
console.log(num.toExponential().replace(/e/+?/, '' x 10^''));
En este fragmento he usado RegExp para reemplazar e
o e+
(en el caso de exponente positivo).
Si desea especificar el número de dígitos después del punto decimal, puede usar a toExponential(NumberOfDigits)
en los ejemplos anteriores.
Quiero hacer una función que tome un valor ingresado y lo convierta a notación científica (N x 10 ^ a)
He intentado muchas cosas diferentes, pero parece que no puedo hacerlo bien.
Ejemplo:
Entro en 200. El convertidor lo convierte a 2 x 10 ^ 2
Puedes hacer algo como esto:
a = 200
a.toExponential(); //output 2e+2
fiddle: http://jsfiddle.net/Q8avJ/9/
Si quieres un formato base 10 como este:
m x 10 n
Entonces puedes usar una función como esta:
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>'';
}
http://jsfiddle.net/u1hd4zm9/ : http://jsfiddle.net/u1hd4zm9/
Lo único extraño es que el método toFixed (al menos en Chrome) no redondea las mitades exactas hacia arriba, sino hacia abajo. Por ejemplo, si ejecuta este código:
var test = 2.55;
alert(test.toFixed(1));
Se imprimirá ''2.5'' y no ''2.6'' como usted espera. Sin embargo si ejecuta este código:
var test = 2.5;
alert(test.toFixed(0));
Se imprimirá 3. Así que sé consciente de eso.