Объект math работает с математическими функциями, а его методы можно использовать для вызова этих функций. Ниже представлены некоторые методы объекта math:
Какие-то методы вы будете использовать часто, какие-то редко, а некоторые вам и вовсе не пригодятся. Рассмотрим пример использования объекта math.
Предположим мы хотим написать сценарий, который будет вычислять площадь треугольника по трем его сторонам. Для этого нам потребуется использовать формулу Герона:

Для тех, кто давно окончил школу, напоминаю:
S - площадь
a, b, c - длины сторон треугольника
Итак, напишем в html-странице код формы:
math javascript
Здесь нет ничего нового. Теперь на странице script.js напишем код функции:
function areaOfTriangle(obj){
var a=1*obj.st1.value;
var b=1*obj.st2.value;
var c=1*obj.st3.value;
var p=(a+b+c)/2;
var s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
obj.res.value=s;
}
Здесь мы использовали объект Math и его метод sqrt для извлечения квадратного корня. Выражение, из которого извлекается корень,
должно быть взято в скобки.
Также обратите внимание на первые три строчки функции, они начинаются с 1*, т.е. наши переменные a, b, c мы умножили на единицу. Зачем? Помните, в первом уроке мы говорили о том, что у каждой переменной есть тип, который определяется автоматически. Так как наши переменные приходят из текстового поля, то и тип они имеют string, т.е. они воспринимаются функцией не как числа, а как буквы.
Если бы мы перемножали эти переменные, то их тип автоматически переопределился бы к number, но мы их складываем, а знак операции + расценивается в данном случае, как конкатенация строк. Чтобы этого не происходило, мы и умножили наши переменные на единицу, преобразовав их таким образом к типу number. Ради эксперимента уберите умножение на единицу в этих трех строках и посмотрите, что "насчитает" сценарий. Затем верните правильный вариант и убедитесь, что все работает правильно, как в примере ниже.
Вроде все хорошо, но есть один нюанс: если извлекаемый корень является дробным числом, то дробная часть может быть бесконечно длинной. Для точных вычислений это необходимо, но в большинстве случаев достаточно двух знаков после запятой.
Чтобы округлить результат до N знаков после запятой можно воспользоваться методом toFixed объекта Number. Синтаксис записи следующий:
(x).toFixed(N)
где x - число, которое надо округлить, а N - число знаков после запятой.
Давайте исправим конец нашей функции и округлим результат до 2 знаков после запятой:
function areaOfTriangle(obj){
var a=1*obj.st1.value;
var b=1*obj.st2.value;
var c=1*obj.st3.value;
var p=(a+b+c)/2;
var s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
s=s.toFixed(2);
obj.res.value=s;
}
Вот теперь все аккуратненько:
Вот на сегодня и все, для тренировки поэкспериментируйте с другими методами объекта math.
Предыдущий урок Вернуться в раздел Следующий урок
Warning: include(/inc/footer.inc): failed to open stream: No such file or directory in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141
Warning: include(/inc/footer.inc): failed to open stream: No such file or directory in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141
Warning: include(): Failed opening '/inc/footer.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141
Как создать сайт → Уроки JavaScript → Урок 6. Объект math в javascript
Объект math в javascript
Как уже было сказано, в javascript определены некоторые стандартные объекты и функции. Сегодня мы рассмотрим объект math и его методы.Объект math работает с математическими функциями, а его методы можно использовать для вызова этих функций. Ниже представлены некоторые методы объекта math:
метод | описание |
---|---|
abs | абсолютное значение |
sin, cos, tan | тригонометрические функции |
log | натуральный логарифм |
exp | экспонента |
pow | показательная функция |
sqrt | квадратный корень |
min | наименьшее значение |
max | наибольшее значение |
Какие-то методы вы будете использовать часто, какие-то редко, а некоторые вам и вовсе не пригодятся. Рассмотрим пример использования объекта math.
Предположим мы хотим написать сценарий, который будет вычислять площадь треугольника по трем его сторонам. Для этого нам потребуется использовать формулу Герона:

Для тех, кто давно окончил школу, напоминаю:
S - площадь
a, b, c - длины сторон треугольника
Итак, напишем в html-странице код формы:
Также обратите внимание на первые три строчки функции, они начинаются с 1*, т.е. наши переменные a, b, c мы умножили на единицу. Зачем? Помните, в первом уроке мы говорили о том, что у каждой переменной есть тип, который определяется автоматически. Так как наши переменные приходят из текстового поля, то и тип они имеют string, т.е. они воспринимаются функцией не как числа, а как буквы.
Если бы мы перемножали эти переменные, то их тип автоматически переопределился бы к number, но мы их складываем, а знак операции + расценивается в данном случае, как конкатенация строк. Чтобы этого не происходило, мы и умножили наши переменные на единицу, преобразовав их таким образом к типу number. Ради эксперимента уберите умножение на единицу в этих трех строках и посмотрите, что "насчитает" сценарий. Затем верните правильный вариант и убедитесь, что все работает правильно, как в примере ниже.
Вроде все хорошо, но есть один нюанс: если извлекаемый корень является дробным числом, то дробная часть может быть бесконечно длинной. Для точных вычислений это необходимо, но в большинстве случаев достаточно двух знаков после запятой.
Чтобы округлить результат до N знаков после запятой можно воспользоваться методом toFixed объекта Number. Синтаксис записи следующий:
Давайте исправим конец нашей функции и округлим результат до 2 знаков после запятой:
Вот на сегодня и все, для тренировки поэкспериментируйте с другими методами объекта math.
Предыдущий урок Вернуться в раздел Следующий урок
Warning: include(/inc/footer.inc): failed to open stream: No such file or directory in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141
Warning: include(/inc/footer.inc): failed to open stream: No such file or directory in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141
Warning: include(): Failed opening '/inc/footer.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/user17106/data/www/m.site-do.ru/js/js6.php on line 141