2012-10-10 46 views
10

Duplicar posible:
Behavior difference between parseInt() and parseFloat()diferencia entre parseInt() y parseFloat()

var box = $('.box'), 
fontSize = parseInt(box.css('font-size'), 10) + 5; 

$('button').on('click', function() { 
    box.animate({fontSize: fontSize}); 
}); 

// ..

var box = $('.box'), 
fontSize = parseFloat(box.css('font-size'), 10) + 5; 

    $('button').on('click', function() { 
    box.animate({fontSize: fontSize}) 
}); 

lo que la diferencia entre ..

**fontSize = parseInt(box.css('font-size'), 10);** 

**fontSize = parseFloat(box.css('font-size'), 10);** 

y y por qué debería poner 10 como contexto ... ¿Ayuda?

+1

Tener un vistazo a esta pregunta http://stackoverflow.com/questions/9528433/behavior-difference-between-parseint-and- parsefloat – Amitd

+1

También este https: //developer.mozilla.org/es-ES/docs/JavaScript/Guide/Functions? redirectlocale = en-US & redirectslug = Core_JavaScript_1.5_Guide% 2FFunctions # parseInt_and_parseFloat_Functions – Amitd

Respuesta

4

En primer lugar, solo parseInt acepta el segundo argumento. Se llama radix. Representa el sistema numérico que se utilizará. En el ejemplo, puede convertir el número en código binario o hexadecimal.

parseFloat solo acepta un argumento.

+0

gracias por la ayuda –

32

JavaScript proporciona dos métodos para la conversión de primitivas no número en números: parseInt() y parseFloat(). Como puede haber adivinado, el primero convierte un valor en un entero mientras que el último convierte un valor en un número de punto flotante.

Cualquier número literal contenida en una cadena también se convierte correctamente, por lo que la cadena "0xA" se convierte adecuadamente en el número 10. Sin embargo, la cadena "22,5" se convertirá en 22, porque el punto decimal es un caracter inválido para un entero. Algunos ejemplos:

var iNum1 = parseInt ("1234blue"); // devuelve 1234

var iNum2 = parseInt ("0xA"); // devuelve 10

var iNum3 = parseInt ("22.5"); // devuelve 22

var iNum4 = parseInt ("azul"); // devuelve NaN

El método parseInt() también tiene un modo radix, que le permite convertir cadenas en binario, octal, hexadecimal o cualquier otra base en un entero.El radix se especifica como un segundo argumento para parseInt(), por lo que una llamada para analizar un valor hexadecimal se ve así:

var iNum1 = parseInt ("AF", 16); // devuelve 175

Por supuesto, esto también se puede hacer para binarios, octales, e incluso decimal (que es el modo por defecto):

var iNum1 = parseInt ("10", 2); // devuelve 2

var iNum2 = parseInt ("10", 8); // devuelve 8

var iNum2 = parseInt ("10", 10); // devuelve 10

Si los números decimales contienen un cero inicial, siempre es mejor especificar el radix como 10 para que no termine accidentalmente con un valor octal. Por ejemplo:

var iNum1 = parseInt ("010"); // devuelve 8

var iNum2 = parseInt ("010", 8); // devuelve 8

var iNum3 = parseInt ("010", 10); // devuelve 10

En este código, ambas líneas se analizar la cadena "010" en un número. La primera línea piensa que la cadena es un valor octal y lo analiza de la misma manera que la segunda línea (que especifica la raíz como 8). El última línea especifica un radix de 10, por lo iNum3 termina igual a 10.

Otra diferencia al usar parseFloat() es que la cadena debe representar un número de coma flotante en forma decimal, no octal o hexadecimal . Este método hace caso omiso de ceros a la izquierda, por lo que el número octal 0908 se analiza en 908, y el número hexadecimal 0xA devolverá NaN porque x no es un carácter válido para un número de coma flotante. Tampoco hay modo radix para parseFloat().

Algunos ejemplos del uso de parseFloat():

var fNum1 = parseFloat ("1234blue"); // devuelve 1234

var fNum2 = parseFloat ("0xA"); // devuelve 0

var fNum3 = parseFloat ("22,5"); // devuelve 22,5

var fNum4 = parseFloat ("22.34.5"); // devuelve 22,34

var fNum5 = parseFloat ("0908"); // devuelve 908

var fNum6 = parseFloat ("azul"); // devuelve NaN

Read More, Read More

Similar Question Read more here

+0

nice, comprehensive answer – nbrooks

+1

Nice answer. Una solicitud. Usted escribió "var fNum1 = parseFloat (" 1234blue "); // devuelve 1234.0". Pero la realidad es que 1234.0 == 1234 en javascript ya que solo hay un tipo numérico. Al escribir 1234.0 para el resultado de parseFloat y 1234 para el resultado de parseInt, implica que hay una diferencia entre los dos resultados, cuando de hecho no existe. – Amir

+3

parseFloat ("0xA"); no devuelve NaN, al menos en mi prueba. Devuelve 0 porque analiza 0 y se detiene en la x. – rocketsarefast