Разница между parseInt() и parseFloat()

Возможный дубликат:
Разница в поведении между parseInt() и 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})
});

какая разница между..

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

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

и почему нужно поставить 10 в качестве контекста. Пожалуйста, помогите?

Ответ 1

JavaScript предоставляет два метода преобразования не числовых примитивов в числа: parseInt() и parseFloat(). Как вы, возможно, догадались, первый преобразует значение в целое число, тогда как последнее преобразует значение в число с плавающей запятой.

Любой литерал числа, содержащийся в строке, также преобразуется правильно, поэтому строка "0xA" правильно преобразуется в число 10. Однако строка "22.5" будет преобразована в 22, поскольку десятичная точка является недопустимым символом для целого числа. Некоторые примеры:

var iNum1 = parseInt ( "1234blue" );//возвращает 1234

var iNum2 = parseInt ( "0xA" );//возвращает 10

var iNum3 = parseInt ( "22.5" );//возвращает 22

var iNum4 = parseInt ( "синий" );//возвращает NaN

Метод parseInt() также имеет режим radix, позволяющий преобразовывать строки в двоичную, восьмеричную, шестнадцатеричную или любую другую базу в целое. Радикс указан как второй аргумент parseInt(), поэтому вызов для разбора шестнадцатеричного значения выглядит следующим образом:

var iNum1 = parseInt ( "AF", 16);//возвращает 175

Конечно, это также можно сделать для двоичной, восьмеричной и четной десятичной (который является режимом по умолчанию):

var iNum1 = parseInt ( "10" , 2);//возвращает 2

var iNum2 = parseInt ( "10" , 8);//возвращает 8

var iNum2 = parseInt ( "10" , 10);//возвращает 10

Если десятичные числа содержат начальный ноль, всегда лучше указать radix как 10, чтобы вы случайно не получили восьмеричное значение. Например:

var iNum1 = parseInt ( "010" );//возвращает 8

var iNum2 = parseInt ( "010", 8);//возвращает 8

var iNum3 = parseInt ( "010", 10);//возвращает 10

В этом коде обе строки анализируют строку "010" на число. Первая строка думает, что строка является восьмеричным значением и анализирует ее так же, как и вторая строка (которая определяет радикс как 8). последняя строка определяет радиус 10, поэтому iNum3 заканчивается на 10.

Другое отличие при использовании parseFloat() состоит в том, что строка должна представлять число с плавающей запятой в десятичной форме, а не восьмеричную или шестнадцатеричную. Этот метод игнорирует начальные нули, поэтому восьмеричное число 0908 будет проанализировано на 908, а шестнадцатеричное число 0xA вернет NaN, потому что x не является допустимым символом для числа с плавающей запятой. Также нет режима radix для parseFloat().

Некоторые примеры использования parseFloat():

var fNum1 = parseFloat ( "1234blue" );//возвращает 1234

var fNum2 = parseFloat ( "0xA" );//возвращает 0

var fNum3 = parseFloat ( "22.5" );//возвращает 22.5

var fNum4 = parseFloat ( "22.34.5" );//возвращает 22.34

var fNum5 = parseFloat ( "0908" );//возвращает 908

var fNum6 = parseFloat ( "синий" );//возвращает NaN

Подробнее, Подробнее

Подобный вопрос Подробнее здесь

Ответ 2

Прежде всего, только parseInt принимает второй аргумент. Он называется radix. Он представляет собой цифровую систему, которая будет использоваться. В примере вы можете преобразовать число в двоичный или шестнадцатеричный код.

parseFloat принимает только один аргумент.