В чём разница между функциями parseInt() и parseFloat()?
В JavaScript функции parseInt() и parseFloat() используются для преобразования строк в числа, однако они имеют различные цели и поведение. Давайте разберем каждую из них подробнее.
1. Общая информация
parseInt(): используется для преобразования строки в целое число. Это означает, что функция игнорирует все десятичные знаки и возвращает только целую часть числа.parseFloat(): преобразует строку в число с плавающей точкой (десятичное число). Эта функция учитывает десятичные знаки и возвращает значение в формате с плавающей точкой.
2. Синтаксис
Обе функции имеют схожий синтаксис:
parseInt(string, [radix]);
parseFloat(string);
string: строка, которую вы хотите преобразовать в число.radix(дляparseInt): необязательный параметр, который указывает основание системы счисления (от 2 до 36). Если не указан, используется основание 10.
3. Примеры
Пример использования parseInt()
console.log(parseInt("42")); // 42
console.log(parseInt("42.5")); // 42
console.log(parseInt("abc42")); // NaN (Not a Number)
console.log(parseInt("101", 2)); // 5 (двоичное)
Пример использования parseFloat()
console.log(parseFloat("42")); // 42
console.log(parseFloat("42.5")); // 42.5
console.log(parseFloat("abc42")); // NaN
console.log(parseFloat("3.14e2")); // 314 (научная нотация)
4. Ключевые отличия
-
Целое vs. Десятичное:
parseInt()возвращает только целую часть числа, игнорируя все после десятичной точки.parseFloat()возвращает число с плавающей точкой, включая дробную часть.
-
Обработка строки:
- Оба метода игнорируют начальные пробелы, но в случае
parseInt(), если строка начинается с нечисловых символов, она вернетNaN.parseFloat()работает аналогично.
- Оба метода игнорируют начальные пробелы, но в случае
-
Научная нотация:
parseFloat()поддерживает научную нотацию (например, "3.14e2" будет преобразовано в 314), в то время какparseInt()не поддерживает её.
5. Практические советы
- Выбор функции: Используйте
parseInt()для работы с целыми числами иparseFloat()для десятичных. - Проверка на NaN: Всегда проверяйте результат на
NaN, так как это может привести к ошибкам в дальнейшем коде.
let num = parseInt("abc42");
if (isNaN(num)) {
console.log("Это не число!");
}
6. Распространенные ошибки
- Неправильное использование
radixвparseInt(), что может привести к неожиданным результатам. Всегда указывайте основание, особенно если вы работаете с числами в других системах счисления.
console.log(parseInt("011")); // 11 (в десятичной системе)
console.log(parseInt("011", 8)); // 9 (в восьмеричной системе)
- Не учитывайте, что
parseInt()иparseFloat()могут возвращатьNaN, если строка не начинается с чисел. Это может привести к ошибкам, если результат не проверяется.
В заключение, понимание различий между parseInt() и parseFloat() поможет вам более эффективно работать с числами в JavaScript, избегая распространенных ошибок и недоразумений.