Obtener la porción decimal de un número con JavaScript
Tengo números flotantes como 3.2
y 1.6
.
Necesito separar el número en parte entera y decimal. Por ejemplo, un valor de 3.2
se dividiría en dos números, es decir, 3
y0.2
Obtener la porción entera es fácil:
n = Math.floor(n);
Pero tengo problemas para obtener la parte decimal. He probado esto:
remainder = n % 2; //obtem a parte decimal do rating
Pero no siempre funciona correctamente.
El código anterior tiene el siguiente resultado:
n = 3.1 // gives remainder = 1.1
¿Qué me falta aquí?
Uso 1
, no 2
.
js> 2.3 % 1
0.2999999999999998
var decimal = n - Math.floor(n)
Aunque esto no funcionará para números negativos, es posible que tengamos que hacer
n = Math.abs(n); // Change to positive
var decimal = n - Math.floor(n)
Podrías convertir a cadena, ¿verdad?
n = (n + "").split(".");
¿Cómo es 0,2999999999999998 una respuesta aceptable? Si yo fuera el autor de la pregunta, querría una respuesta de .3. Lo que tenemos aquí es una precisión falsa, y mis experimentos con el piso, %, etc. indican que a Javascript le gusta la precisión falsa para estas operaciones. Entonces creo que las respuestas que utilizan la conversión a cadena están en el camino correcto.
Yo haría esto:
var decPart = (n+"").split(".")[1];
Específicamente, estaba usando 100233.1 y quería la respuesta ".1".