Полезные математические функции в JavaScript и как их использовать

JavaScript Программирование и разработка

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

Math.max и Math.min

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

Math.max(1,2,3,4,5)
<< 5

Math.min(4,71,-7,2,1,0)
<< -7

Все аргументы должны быть типа Number данных. В противном случае NaNбудет возвращено:

Math.max('a','b','c')
<< NaN

Math.min(5,"hello",6)
<< NaN

Однако будьте осторожны. JavaScript попытается привести значения к числу:

Math.min(5,true,6)
<< 1

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

В качестве аргумента необходимо указать список чисел, а не массив, но вы можете использовать оператор расширения (…) для распаковки массива чисел:

Math.max(...[8,4,2,1])
<< 8

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

const scores = [23,12,52,6,25,38,19,37,76,54,24]
const highScore = Math.max(...scores)
<< 76

Функция Math.minполезна для поиска лучшей цены на сайте сравнения цен:

const prices = [19.99, 20.25, 18.57, 19,75, 25, 22.50]
const bestPrice = Math.min(...prices)
<< 18.57

Абсолютные значения

Абсолютное значение — это просто размер числа, независимо от его размера. Это означает, что положительные числа остаются прежними, а отрицательные теряют знак минус. Функция Math.absвычислит абсолютное значение своего аргумента:

Math.abs(5)
<< 5

Math.abs(-42)
<< 42

Math.abs(-3.14159)
<< 3.14159

Почему вы хотите это сделать? Ну, иногда вы хотите вычислить разницу между двумя значениями, которую вы вычисляете, вычитая наименьшее из наибольшего, но часто вы не будете знать заранее, какое из двух значений наименьшее. Чтобы обойти это, вы можете просто вычесть числа в любом порядке и взять абсолютное значение:

const x = 5
const y = 8

const difference = Math.abs(x - y)
<< 3

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

const dealA = 150
const dealB = 167

const saving = Math.abs(dealA - dealB)
<< 17

Math.pow

Math.powвыполняет расчеты мощности, например:

3= 81

В приведенном выше примере число 3 известно как основание, а 4 — как показатель степени. Мы бы прочитали это как «3 в степени 4 равно 81».

Функция принимает два значения — основание и показатель степени — и возвращает результат возведения основания в степень степени:

Math.pow(2,3)
<< 8

Math.pow(8,0)
<< 1

Math.pow(-1,-1)
<< -1

Math.powв значительной степени был заменен инфиксным оператором возведения в степень ( **), введенным в ES2016, который выполняет точно такую ​​же операцию:

2 ** 3
<< 8

8 ** 0
<< 1

(-1) ** (-1)
<< -1

Вычисление корней

Корни — это операция, обратная степеням. Например, поскольку 3 в квадрате равно 9, квадратный корень из 9 равен 3.

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

Math.sqrt(4)
<< 2

Math.sqrt(100)
<< 10

Math.sqrt(2)
<< 1.4142135623730951

Эта функция вернется NaN, если в качестве аргумента будет указано отрицательное число или нечисловое значение:

Math.sqrt(-1)
<< NaN

Math.sqrt("four")
<< NaN

Но будьте осторожны, потому что JavaScript попытается принудить тип:

Math.sqrt('4') 
<< 2

Math.sqrt(true)
<< 1

Math.cbrtвозвращает кубический корень числа. Это принимает все числа, включая отрицательные числа. Он также попытается принудить тип, если используется значение, не являющееся числом. Если он не может привести значение к числу, он вернет NaN:

Math.cbrt(1000)
<< 10

Math.cbrt(-1000)
<< -10

Math.cbrt("10")
<< 2.154434690031884

Math.cbrt(false)
<< 0

Другие корни можно вычислить, используя оператор возведения в степень и дробную степень. Например, корень четвертой степени можно найти, возведя его в четверть степени (или 0,25). Таким образом, следующий код вернет корень четвертой степени из 625:

625 ** 0.25
<< 5

Чтобы найти корень пятой степени числа, вы должны возвести его в степень одной пятой (или 0,2):

32 ** 0.2
<< 2

В общем, чтобы найти корень n-й степени числа, вы должны возвести его в степень 1/n, поэтому, чтобы найти корень шестой степени из миллиона, вы должны возвести его в степень 1/6:

1000000 ** (1/6)
<< 9.999999999999998

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

Также обратите внимание, что вы не можете найти корни отрицательных чисел, если корень четный. Это вернется NaN. Таким образом, вы не можете попытаться найти, например, 10-й корень из −7 (потому что 10 четно):

(-7) ** 0.1 // 0.1 is 1/10
<< NaN

Одна из причин, по которой вы можете захотеть вычислить корни, — это вычислить темпы роста. Например, вы хотите увеличить свою прибыль в 10 раз к концу года. Насколько ваша прибыль должна расти каждый месяц? Чтобы выяснить это, вам нужно вычислить 12-й корень из 10 или 10 в двенадцатой степени:

10 ** (1/12)
<< 1.2115276586285884

Этот результат говорит нам о том, что месячный коэффициент роста должен составлять около 1,21, чтобы к концу года увеличить прибыль в 10 раз. Или, другими словами, вам нужно увеличивать свою прибыль на 21% каждый месяц, чтобы достичь своей цели.

Логарифмы и экспоненты

Логарифмы — или для краткости журналы — можно использовать для нахождения показателя степени вычисления. Например, представьте, что вы хотите решить следующее уравнение:

2ˣ = 100

В приведенном выше уравнении, xконечно, не целое число, потому что 100 не является степенью числа 2. Это можно решить, используя логарифмы по основанию 2:

x = log²(100) = 6.64 (rounded to 2 d.p.)

У Mathобъекта есть log2метод, который будет выполнять этот расчет:

Math.log2(100)
<< 6.643856189774724

У него также есть log10метод, который выполняет те же вычисления, но использует 10 в качестве базового числа:

Math.log10(100)
<< 2

Этот результат говорит нам о том, что для получения 100 нужно возвести 10 в степень 2.

Есть еще один метод журнала, который просто Math.log. Это вычисляет натуральный логарифм, который использует число Эйлера ( eпримерно 2,7) в качестве основания. Это значение может показаться странным для использования, но на самом деле оно часто встречается в природе, когда происходит экспоненциальный рост — отсюда и название «натуральные логарифмы»:

Math.log(10)
<< 4.605170185988092

Math.log(Math.E)
<< 1

Последнее вычисление показывает, что число Эйлера ( e), хранящееся как константа Math.E, необходимо возвести в степень 1, чтобы получить само себя. Это имеет смысл, потому что любое число в степени 1 на самом деле является самим собой. Те же результаты могут быть получены, если 2 и 10 будут переданы в качестве аргументов для Math.log2и Math.log10:

Math.log2(2)
<< 1

Math.log10(10)
<< 1

Зачем тебе логарифмы? При работе с данными, которые растут экспоненциально, обычно используют логарифмическую шкалу, чтобы легче было увидеть скорость роста. Логарифмические шкалы часто использовались для измерения количества ежедневных случаев COVID-19 во время пандемии, поскольку они так быстро росли.

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

Гипотенуза

Возможно, вы помните, как в школе изучали теорему Пифагора. Это говорит о том, что длину наибольшей стороны прямоугольного треугольника ( гипотенузу ) можно найти по следующей формуле:

= x² + y²

Здесь x и y — длины двух других сторон.

У Mathобъекта есть hypotметод, который будет вычислять длину гипотенузы при наличии двух других длин в качестве аргументов. Например, если одна сторона имеет длину 3, а другая — 4, мы можем вычислить гипотенузу, используя следующий код:

Math.hypot(3,4)
<< 5

Но почему это когда-либо может быть полезно? Итак, гипотенуза — это мера кратчайшего расстояния между двумя точками. Это означает, что если вы знаете координаты x и y двух элементов на странице. Вы можете использовать эту функцию, чтобы вычислить, насколько далеко они друг от друга:

const ship = {x: 220, y: 100}
const boat = {x: 340, y: 50}

const distance = Math.hypot(ship.x - boat.x,ship.y - boat.y)

Я надеюсь, что этот краткий обзор был полезен и помог вам использовать всю мощь объекта JavaScript Math в ваших проектах.

Читайте также:  Сравнение символов в C
Оцените статью
bestprogrammer.ru
Добавить комментарий