Pregunta

Como todos saben, ya que es uno de los temas más solicitados, así que tengo problemas con los errores de redondeo (en realidad no son errores, soy muy consciente). En lugar de explicar mi punto, daré un ejemplo de qué posibles números tengo y qué entrada quiero poder obtener:

Digamos

var a = 15 * 1e-9;
alert(a)

salidas

1.5000000000000002e-8

Quiero poder obtener 1.5e-8 En cambio, pero no puedo simplemente multiplicarme por 10E8, redondear y dividir por 10E8 porque no sé si será E-8 o E-45 o cualquier otra cosa.

Así que básicamente quiero poder obtener el 1.5000002 parte, aplicar toFixed(3) y devuelva la parte del exponente.

Podría convertir en una cadena y analizar, pero simplemente no parece correcto ...

Alguna idea ?


(Pido disculpas de antemano si cree que este es uno de los muchos duplicados, pero no pude encontrar una pregunta similar, solo las relacionadas)

gaélico

¿Fue útil?

Solución

Puedes usar el toPrecision método:

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"

Otros consejos

Si está haciendo trabajo científico y necesita redondear con cifras significativas en mente: Redondeo a un número arbitrario de dígitos significativos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top