Obtener la porción decimal de un número con JavaScript

Resuelto Oscar asked hace 13 años • 32 respuestas

Tengo números flotantes como 3.2y 1.6.

Necesito separar el número en parte entera y decimal. Por ejemplo, un valor de 3.2se dividiría en dos números, es decir, 3y0.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í?

Oscar avatar Dec 23 '10 01:12 Oscar
Aceptado

Uso 1, no 2.

js> 2.3 % 1
0.2999999999999998
Ignacio Vazquez-Abrams avatar Dec 22 '2010 18:12 Ignacio Vazquez-Abrams
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)
greenimpala avatar Dec 22 '2010 18:12 greenimpala

Podrías convertir a cadena, ¿verdad?

n = (n + "").split(".");
sdleihssirhc avatar Dec 22 '2010 20:12 sdleihssirhc

¿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".

jomofrodo avatar Mar 12 '2014 21:03 jomofrodo