Number. Свойства и методы
Все числа в JavaScript, как целые так и дробные, имеют тип Number и записывать их можно не только в десятичной системе счисления.
Приведение к числу
Большинство арифметических операций и математических функций преобразуют значение в число автоматически. Для того чтобы сделать это явно, используйте функцию Number(val)
, передавая ей в val
то, что надо привести к числу.
Если значение не возможно привести к числу, результатом будет специальное числовое значение NaN (Not a Number)
. Аналогичным образом происходит преобразование и в других математических операторах и функциях.
Преобразуют строку символ за символом, пока это возможно. При возникновении ошибки возвращается число, которое получилось.
Метод Number.parseInt()
парсит из строки целое число.
Метод Number.parseFloat()
парсит из строки дробное число.
Проверка на число
Для проверки на число можно использовать метод Number.isNaN(val)
. Он проверяет, является ли указанное значение NaN
или нет. Метод отвечает на вопрос "Это Not A Number?" и возвращает:
true
- если значениеval
этоNaN
false
- если значениеval
это неNaN
Для всех значений val
кроме NaN
, при передаче в Number.isNaN(val)
вернёт false
. Этот метод не производит попытку преобразовать val
к числу, а просто выполняет проверку на NaN
.
Сложение чисел с плавающей точкой
При сложении не целых чисел в JavaScript и других языках программирования, есть особенность. Если кратко, то 0.1 + 0.2
не равно 0.3
, результат сложения больше чем 0.3
. Все от того что машина считает в двоичной системе.
Число 0.1
в двоичной системе счисления - это бесконечная дробь, так как единица на десять в двоичной системе не делится. Двоичное значение бесконечных дробей хранится только до определенного знака, поэтому возникает неточность. При сложении 0.1
и 0.2
, две неточности складываются, получается незначительная, но всё же ошибка в вычислениях.
Конечно, это не означает, что точные вычисления для таких чисел невозможны. Есть несколько методов решения этой проблемы.
Можно сделать их целыми, умножив на N, сложить, а потом результат разделить также на N.
Еще один способ - сложить, а результат отсечь до определённого знака после запятой при помощи метода toFixed()
.
Если интересно посмотреть в какой вид для машины преобразуется дробь, посмотри статью.
Класс Math
Math
Один из встроенных классов, который предоставляет набор методов для работы с числами. Знание всех методов наизусть не требуется, только некоторых, наиболее полезных.
Last updated