Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Урок 6. Работа с математическими функциями в JavaScript



В данном уроке мы будем изучать стандартные функции JavaScript.

Изучите методы и функции по следующим ссылкам, постарайтесь запомнить и законспектировать полученную информацию: Math.abs, Math.round, Math.ceil, Math.floor, Math.min, Math.max, Math.sqrt, Math.pow, Math.random, isNaN, isFinite, parseInt, parseFloat, toFixed.

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

 

Функция Math.abs возвращает модуль числа, то есть из отрицательного числа делает положительное.

Синтаксис

Math.abs(число);

В данном примере будет выведен модуль числа -3:

document.write(Math.abs( - 3));

Результат выполнения кода:

3

 

В данном примере будет выведен модуль числа 3:

document.write(Math.abs(3));

Результат выполнения кода:

3

Функция Math.round выполняет округление до ближайшего целого числа по правилам математического округления.

См. функции Math.ceil и Math.floor, которые также выполняют округление числа (ceil всегда в большую сторону, а floor - всегда в меньшую).

См. методы toFixed и toPrecision, которые также выполняют округление числа.

 

Math.round(число);

 

Округлим до целых число 6.4:

document.write(Math.round(6.4));

Результат выполнения кода:

6

 

Округлим до целых число 6.6:

document.write(Math.round(6.6));

Результат выполнения кода:

7

 

Округлим до целых число 6.5:

document.write(Math.round(6.5));

Результат выполнения кода:

7

 

Округлим до целых число 6.49999:

document.write(Math.round(6.49999));

Результат выполнения кода:

6

Функция Math.ceil производит округление числа до целых всегда в большую сторону.

См. функции Math.round и Math.floor, которые также выполняют округление числа.

См. методы toFixed и toPrecision, которые также выполняют округление числа.

 

Math.ceil(число);

 

Округлим число 3.00001 в большую сторону:

document.write(Math.ceil(3.00001));

Результат выполнения кода:

4

 

Функция Math.floor производит округление числа до целых всегда в меньшую сторону.

См. функции Math.round и Math.ceil, которые также выполняют округление числа.

См. методы toFixed и toPrecision, которые также выполняют округление числа.

 

Math.floor(число);

 

Округлим число 2.9999 в меньшую сторону:

document.write(Math.floor(2.9999));

Результат выполнения кода:

2

Функция Math.min возвращает минимальное число из группы чисел, переданных в функцию.

Если в функцию ничего не передано, то будет возращено Infinity.

По умолчанию функция не работает с массивами, однако с помощью хитрого приема можно найти минимальное значение массива: Math.min.apply(null, arr), где arr - произвольный массив.

См. также функцию Math.max, которая возвращает максимальное число из группы чисел.

Math.min(число, число, число...);

 

В данном примере будет выведено минимальное число из группы чисел 40, 20, 42, 100, 67:

document.write(Math.min(40, 20, 42, 100, 67));

Результат выполнения кода:

20

В данном примере будет выведено минимальное число из группы чисел -1, -100, -30, -25, 40:

document.write(Math.min( - 1, - 100, - 30, - 25, 40));

Результат выполнения кода:

-100

 

В данном примере будет выведено -Infinity, так как функции не передали параметров:

document.write(Math.min());

Результат выполнения кода:

-Infinity

 

В данном примере будет выведено минимальное значение массива:

var arr = [40, 20, 42, 100, 67];

document.write(Math.min.apply(null, arr));

Результат выполнения кода:

20

Функция Math.max возвращает максимальное число из группы чисел, переданных в функцию.

Если в функцию ничего не передано, то будет возращено -Infinity.

По умолчанию функция не работает с массивами, однако с помощью хитрого приема можно найти максимальное значение массива: Math.max.apply(null, arr), где arr - произвольный массив.

См. также функцию Math.min, которая возвращает минимальное число из группы чисел.

 

Math.max(число, число, число...);

 

В данном примере будет выведено максимальное число из группы чисел 1, 5, 10, 34, 100:

document.write(Math.max(1, 5, 10, 34, 100));

Результат выполнения кода:

100

 

В данном примере будет выведено максимальное число из группы чисел -1, 0, -20, -56, -100:

document.write(Math.max( - 1, 0, - 20, - 56, - 100));

Результат выполнения кода:

0

 

В данном примере будет выведено -Infinity, так как функции не передали параметров:

document.write(Math.max());

Результат выполнения кода:

-Infinity

 

В данном примере будет выведено максимальное значение массива:

var arr = [1, 5, 10, 34, 100];

document.write(Math.max.apply(null, arr));

Результат выполнения кода:

100

Функция Math.sqrt возвращает квадратный корень числа.

См. также функцию Math.pow, которое возводит число в заданную степень.

 

Math.sqrt(положительное число);

 

В данном примере будет выведен квадратный корень из 4:

document.write(Math.sqrt(4));

Результат выполнения кода:

2

 

В данном примере будет выведен квадратный корень из 15:

document.write(Math.sqrt(15));

Результат выполнения кода:

3.872983346207417

 

В данном примере будет выведен квадратный корень из -100. Так как передано отрицательное число, то будет выведено NaN:

document.write(Math.sqrt( - 100));

Результат выполнения кода:

NaN

Функция Math.pow возводит число в заданную степень. Первым параметром передается число, вторым - в какую степень его возвести.

См. также функцию Math.sqrt, которая извлекает квадратный корень из числа.

Math.pow(число, степень);

 

В данном примере число 3 возводится в степень 4:

document.write(Math.pow(3, 4));

Результат выполнения кода:

81

 

В данном примере число 2 возводится в степень -5:

document.write(Math.pow(2, - 5));

Результат выполнения кода:

0.03125

Функция Math.random возвращает случайное дробное число от 0 до 1.

 

Math.random();

 

Чтобы получить случайно число в определенном промежутке (дробное или целое) следует и пользоваться специальными приемами:

 

Случайное дробное число между min и max

 

function getRandomArbitary(min, max) {

    return Math.random() * (max - min) + min;

}

 

Случайное целое между min и max

//Использование Math.round() даст неравномерное распределение!

function getRandomInt(min, max) {

    return Math.floor(Math.random() * (max - min + 1)) + min;

}

 

В данном примере будет выведено случайное число от 0 до 1:

document.write(Math.random());

Результат выполнения кода:

0.5416665468657356

 

В данном примере будет выведено случайное целое число от 10 до 100:

function getRandomInt(min, max) {

    return Math.floor(Math.random() * (max - min + 1)) + min;

}

 

document.write(getRandomInt(10, 100));

Результат выполнения кода:

12

 

Функция isNaN проверяет, является ли переданный параметр числом или нет.

Функция вернет true, если параметр не является числом и false, если является.

Как она работает: переданный параметр преобразуется к числу. Если это не число (строка, массив и т.п.), то он преобразуется в NaN. Ну, а isNaN проверяет - NaN у нас получился после преобразования или нет.

Учтите, что, к примеру true преобразуется не к NaN, а к числу 1. Есть и другие подобные подводные камни, смотрите их в описании NaN.

 

isNaN(значение);

 

В данном примере будет выведено false, так как параметр является числом:

var num = 13;

document.write(isNaN(num));

Результат выполнения кода:

false

 

В данном примере будет выведено true, так как параметр не является числом:

var num = 'Я люблю Javascript';

document.write(isNaN(num));

Результат выполнения кода:

true

 

Функция isFinite для проверки параметра на то, что он является конечным числом (то есть не строкой, массивом и т.п. и не плюс или минус бесконечностью).

 

isFinite(значение);

 

Как работает эта функция: она вернет false, если число является плюс или минус бесконечностью (то есть Infinity или -Infinity) или не числом (то есть NaN), в остальных случаях вернет true.

То есть строки, массивы и т.п. будут преобразованы в NaN и соответственно вернут false.

Однако есть исключения: пустая строка '' возвращает true, строка с пробелами ' ' также возвращает true, null возвращает true, для значений true и false также возвращается true.

Это происходит потому, что эти значения корректно преобразуются в числа (а не в NaN).

Если вам нужна действительно точная проверка на число, которая не считает числом строку из пробелов, логические и специальные значения - используйте следующую функцию isNumeric:

 

function isNumeric(num) {

    return! isNaN(parseFloat(num)) & & isFinite(num);

}

 

Давайте разберемся, как она работает.

Функция isFinite преобразует параметр к числу и возвращает true, если это не Infinity, -Infinity или NaN.

Таким образом, правая часть отсеет заведомо нечисла, но оставит такие значения как true, false, null, пустую строку '' и строку с пробелами, т.к. они корректно преобразуются в числа.

Чтобы отсеять эти значения, нужна функция parseFloat, которая для true, false, null, '', ' ' вернет NaN.

Так устроена функция parseFloat: она преобразует параметр к строке, т.е. true, false, null становятся " true", " false", " null", а затем считывает из нее число, при этом пустая строка и строка с пробелами дают NaN.

Затем результат parseFloat обрабатывается с помощью! isNaN, чтобы получить true или false вместо NaN.

В результате отсеивается все, кроме строк-чисел и обычных чисел.

 

В данном примере будет выведено true, так как параметр является числом:

var num = 3;

document.write(isFinite(num));

Результат выполнения кода:

true

 

В данном примере будет выведено false, так как параметр не является числом:

var num = 'JS';

document.write(isFinite(num));

Результат выполнения кода:

false

 

В данном примере будет выведено false, так как параметр является бесконечностью:

var num = Infinity;

document.write(isFinite(num));

Результат выполнения кода:

false

 

В данном примере будет выведено false, так как 1/0 - это по сути Infinity (бесконечность):

var num = 1 / 0;

document.write(isFinite(num));

Результат выполнения кода:

false

 

В данном примере будет выведено true, так как пустая строка, не являющаяся числом, - это исключение:

var num = '';

document.write(isFinite(num));

Результат выполнения кода:

true

Функция parseInt преобразует строку в целое число.

Это нужно для значений типа '12px' - когда вначале стоит число, а потом единицы измерения. Если применить функцию parseInt к '12px', то результатом получится число 12 (и это будет действительно число, а не строка).

Преобразование произойдет, если только целое число стоит в начале строки, иначе будет выведено NaN.

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

 

parseInt(строка, [система счисления]);

 

В данном примере функция преобразует строку в целое число:

var str = '10px';

document.write(parseInt(str));

Результат выполнения кода:

10

 

В данном примере при преобразовании дробная часть будет отброшена:

var str = '10.3px';

document.write(parseInt(str));

Результат выполнения кода:

10

Если вам не нужно отбрасывать дробную часть - используйте функцию parseFloat.

 

В данном примере функция не смогла прочитать число (так как оно не в начале строки) и вернула NaN:

var str = 'width: 100px; ';

document.write(parseInt(str));

Результат выполнения кода:

NaN

Функция parseFloat преобразует строку в число с плавающей точкой.

Это нужно для значений типа '12.5px' - когда вначале стоит число, а потом единицы измерения. Если применить функцию parseFloat к '12.5px', то результатом получится число 12.5 (и это будет действительно число, а не строка).

Преобразование произойдет, если только целое число стоит в начале строки, иначе будет выведено NaN.

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

 

parseFloat(строка, [система счисления]);

 

В данном примере функция parseFloat извлечет дробное число из начала строки:

var str = '10.3px';

document.write(parseFloat(str));

Результат выполнения кода:

10.3

 

Обратите внимание на то, как в этом случае будет работать функция parseInt - она отбросит дробную часть:

var str = '10.3px';

document.write(parseInt(str));

Результат выполнения кода:

10

 

В данном примере функция не смогла прочитать число (так как оно не в начале строки) и вернула NaN:

var str = 'width: 100px';

document.write(parseFloat(str));

Результат выполнения кода:

NaN

 

Метод toFixed производит округление числа до указанного знака в дробной части.

Количество знаков указывается параметром.

Если число знаков не указано, то по умолчанию берется 0 знаков, то есть округление до целого числа.

Параметр метода также может быть отрицательным, в этом случае округлятся будут не знаки в дробной части, а знаки в целой части. К примеру, значение -2 округлит число 12345.6789 в число 12300.

См. функции Math.round, Math.ceil, Math.floor, которые также выполняют округление числа.

См. также метод toPrecision, которая выполняет округление числа до определенного количества символов.

 

число.toFixed(количество знаков в дробной части);

 

В данном примере дроби оставлено только 3 знака в дробной части:

var num = 1.1111;

document.write(num.toFixed(3));

Результат выполнения кода:

1.111

 

В данном примере дроби также оставлено только 3 знака в дробной части, однако последняя цифра увеличилась на 1, так как округление производится по правилам математики:

var num = 1.1119;

document.write(num.toFixed(3));

Результат выполнения кода:

1.112

 

В данном примере дробь округлена до целого числа, так как параметр метода пуст:

var num = 1.111;

document.write(num.toFixed());

Результат выполнения кода:

1

 

В данном примере параметр метода превышает количество знаков в дробной части в исходной дроби, поэтому метод добавил две цифры 0 в конец нашей дроби:

var num = 1.1111;

document.write(num.toFixed(6));

Результат выполнения кода:

1.111100

 

В данном примере параметром метода передано отрицательное значение - округление будет идти уже по целой части числа:

var num = 12345.6789;

document.write(num.toFixed( - 2));

Результат выполнения кода:

12300

 

В данном примере параметром метода передано отрицательное значение. По правилам математического округления число 4 будет увеличено на единицу:

var num = 12345.6789;

document.write(num.toFixed( - 1));

Результат выполнения кода:

12350


Поделиться:



Последнее изменение этой страницы: 2019-10-24; Просмотров: 214; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.099 с.)
Главная | Случайная страница | Обратная связь