В этой статье подробно рассмотрим числа, математические операторы, способы преобразования числа в строку и наоборот, а также много других важных моментов.

Функция isFinite

Функция isFinite позволяет проверить, является ли аргумент конечным числом.

В качестве ответа данная функция возвращает false, если аргумент является Infinity, -Infinity, NaN или будет быть приведён к одному из этих специальных числовых значений. В противном случае данная функция вернёт значение true.

isFinite(73);        // true 
isFinite(-1/0);      // false 
isFinite(Infinity);  // false 
isFinite(NaN);       // false 
isFinite('Текст');   // false

Кроме глобальной функции isFinite в JavaScript имеется ещё метод Number.isFinite. Он в отличие от isFinite не осуществляет принудительное приведения аргумента к числу.

isFinite('73');        // true
Number.isFinite('73'); // false

Функция isNaN

Функция isNaN предназначена для определения того, является ли аргумент числом или может ли быть преобразован к нему. Если это так, то функция isNaN возвращает false. В противном случае она возвращает true.

isNaN(NaN);     //true
isNaN('25px');  //true, т.к. 20px - это не число
isNaN(25.5);    //false
isNaN('25.5');  //false
isNaN('  ');    //false, т.к. пробел или неcколько пробелов преобразуется к 0
isNaN(null);    //false, т.к. значение null преобразуется к 0
isNaN(true);    //false, т.к. значение true преобразуется к 1
isNaN(false);   //false, т.к. значение false преобразуется к 0

Если это действие нужно выполнить без приведения типа, то используйте метод Number.isNaN. Данный метод был введён в язык, начиная с ECMAScript 6.

Как явно преобразовать строку в число?

Явно привести строку в число можно посредством следующих способов:

1. Использовать унарный оператор +, который необходимо поместить перед значением.

+'7.35';   // 7.35
+'текст';  // NaN

Этот способ пренебрегает пробелами в начале и конце строки, а также n (переводом строки).

+' 7.35 ';    //7.35
+'7.35 n ';  //7.35

Используя данный способ необходимо обратить внимание на то, что пустая строка или строка, состоящая из пробелов и n, переводится в число 0. Кроме этого она также преобразует тип данных null и логические значения к числу.

+null;   //0
+true;   //1
+false;  //0
+'   ';  //0

2. Функция parseInt. Данная функция предназначена для преобразования аргумента в целое число. В отличие от использования унарного оператора +, данный метод позволяет преобразовать строку в число, в которой не все символы являются цифровыми. Начинает она преобразовывать строку, начиная с первого символа. И как только она встречает символ, не являющийся цифровым, данная функция останавливает свою работу и возвращает полученное число.

parseInt('18px');   //18
parseInt('33.3%');  //33

Данная функция может работать с разными системами счисления (двоичной, восьмеричной, десятичной, шестнадцатеричной). Указание основание системы счисления осуществляется посредством 2 аргумента.

Кроме этого рекомендуется, всегда указывать основание системы счисления и не полагаться на значение по умолчанию установленное этой функции, например в том или ином браузере.

parseInt('18px', 10);   //18
parseInt('33.3%', 10);  //33
parseInt('101',2);      //5
parseInt('B5',16);      //181

Кроме функции parseInt в JavaScript имеется метод Number.parseInt. Данный метод ничем не отличается от функции parseInt и был введён в JavaScript со спецификацией ECMASCRIPT 2015 (6).

3. Функция parseFloat. Функция parseFloat аналогична parseInt, за исключением того что позволяет выполнить преобразование аргумента в дробное число.

parseFloat('33.3%');  //33.3

Кроме этого функция parseFloat в отличие от parseInt не имеет 2 аргумента, и следовательно она всегда пытается рассмотреть строку как число в десятичной системе счисления.

parseFloat("3.14");
parseFloat("314e-2");
parseFloat("0.0314E+2");

Кроме функции parseFloat в JavaScript имеется метод Number.parseFloat. Данный метод ничем не отличается от функции parseFloat и был введён в JavaScript со спецификацией ECMASCRIPT 2015 (6).

Преобразование числа в строку

Превратить число в строку можно с помощью метода toString.

(12.8).toString();  //"12.8"

Метод toString позволяет также указать основание системы счисления с учётом которой необходимо явно привести число к строке:

(255).toString(16);  //"ff"

Как проверить является ли переменная числом

Определить является ли значение переменной числом можно используя один из следующих способов:

1. С использованием функций isNaN и isFinite:

// myVar - переменная
if (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) {
  //myVar - это число или может быть приведено к нему
};

В виде функции:

// функция
function isNumeric(value) {
  return !isNaN(parseFloat(value)) && isFinite(parseFloat(value));
}
// использование
var myVar = '12px';
console.log(isNumeric(myVar)); //true

Этот способ позволяет определить является ли указанное значение числом или может быть приведено к нему. Данный вариант не считает числом пустую строку, строку из пробелов, значение null, Infinity, -Infinity, true и false.

2. С использованием оператора typeof и функций isFinite, isNaN:

// функция которая проверяет является ли значение числом
function isNumber(value) {
  return typeof value === "number" && 
    isFinite(value) && 
    !isNaN(value);
};
// использование функции isNumber
isNumber(18); //true
// использование функций для проверки текстовых значений
isNumber(parseFloat('')); //false
isNumber(parseFloat('Infinity')); //false
isNumber(parseFloat('12px')); //true

Эта функция определяет имеет ли указанное значение тип Number, а также не принадлежит ли оно к одному из специальных значений Infinity, -Infinity и NaN. Эсли это так, то данная функция возвращает значение true.

3. С помощью метода ECMAScript 6 Number.isInteger(value). Данный метод позволяет определить, является ли указанное значение целым числом.

Number.isInteger('20'); //false, т.к. данный метод не выполняет перевод строки в число
Number.isInteger(20); //true, т.к. данное значение является числом

Чётные и нечётные числа

Проверить является ли число чётным или нечётным можно посредством следующих функций:

// Функция для проверки числа на чётность
function isEven(n) {
  return n % 2 == 0;
}
// Функция для проверки числа на нечётность
function isOdd(n) {
  return Math.abs(n % 2) == 1;
}

Но перед тем как проводить такую проверку желательно убедиться что указанное значение является числом:

value = 20;
if (Number.isInteger(value)) {
  if (isEven(value)) {
    console.log('Число ' + value.toString() + ' - чётное');
  }
} 

Простые числа в Javascript

Рассмотрим пример в котором выведем с помощью Javascript простые числа от 2 до 100.

// Функция, которая проверяет является ли число простым
function isPrime(value) {
  if (isNaN(value) || !isFinite(value) || value%1 || value < 2) return false; 
  var max=Math.floor(Math.sqrt(value));
  for (var i = 2; i< = max; i++) {
    if (value%i==0) {
      return false;
    }
  }
  return true;
}
// создать массив, который будет содержать простые числа от 2 до 100
var primaryNumber = [];
for (var i = 2; i  6-3*2 => ост(0)
5%2 //1, т.е. 5:2=2(.5) => 5-2*2 => ост(1)
7.3%2 //1.3, т.е. 7.3:2=3(.65) => 7.3-2*3 => ост(1.3)
//знак результата операции % равен знаку первого значения
-9%2.5 //-1.5, т.е. 9:2.5=3(.6) => 9-2.5*3 => ост(1.5)
-9%-2.5 //-1.5, т.е. 9:2.5=3(.6) => 9-2.5*3 => ост(1.5)
-2%5 //-2, т.е. 2:5=0(.4) => 2-5*0 => ост(2)
x = 3;
console.log(x++); //выводит 3, у уже потом устанавливает 4
console.log(x); //4
x = 3;
console.log(++x); //устанавливает 4 и выводит
x = 5;
console.log(x--); //выводит 5, у уже потом устанавливает 4
console.log(x); //4
x = 5;
console.log(--x); //устанавливает 4 и выводит 


Кроме этого в JavaScript есть комбинированные операторы: x+=y (x=x+y), x-=y (x=x-y), x*=y (x=x*y), x/=y (x=x/y), x%=y (x=x%y).

x = 3;
y = 6;
x+=y;
console.log(x); //9
x = 3;
y = 6;
x-=y;
console.log(x); //-3
x = 3;
y = 6;
x*=y;
console.log(x); //18
x = 3;
y = 6;
x/=y;
console.log(x); //0.5
x = 3;
y = 6;
x%=y;
console.log(x); //3

Источник: itchief.ru