Yutex - Платный хостинг PHP.
Advego.ru - система покупки и продажи контента для сайтов, форумов и блогов

Технические фишки инфобизнеса 2014

Статьи для сайтов!!!
Метод toFixed - Число знаков после запятой Объект Math - Округление чисел Метод random - Возвращает случайное число

Объект Math в javascript - Методы round, ceil и floor - Округление дробных чисел

Функции и методы числовых объектов - Объект Number

Урок №4 Объект Math - Округление чисел

Количество просмотров: 586

Продолжаем работать с числовыми объектами типа Number. Предыдущие уроки этой темы были посвящены функциям parseInt, parseFloat и Number, которые конвертируют строки в числа; и функции isNaN, которая проверяет, что находится в переменной - число или НЕ число.

Также был урок о методе toFixed, который фиксирует (добавляет) указанное количество знаков (нулей) после запятой.

Здесь будет рассмотрен встроенный в javascript объект, который также работает с числами - это объект Math.

Объект Math (от сокращ. математика) позволяет выполнять различные математические операции. Для этого у него есть свои свойства и методы. Рассмотрим их далее...

Метод round - Округляет переданное числовое значение

Метод round - Округляет переданное числовое значение

Начнем работу с объектом Math с рассмотрения метода round, который округляет передаваемое ему числовое значение.

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

<script type="text/javascript">

var age = 35.57;

age = Math.round(age); /* Округляем значение переменной age */

document.write(age);

</script>

Итак, чтобы округлить дробное десятичное число нужно:

  • Вызвать объект Math.
  • Указать для него метод round.
  • В качестве параметра метода round указать переменную, содержащую дробное число.

Здесь не лишним будет напомнить о правилах округления дробных чисел. Для этого возьмем число 35.57 из рассмотренного выше примера.

При округлении дробная часть числа отбрасывается.

Если дробная часть числа больше 0.5, то целая часть числа увеличивается на единицу. Так, в числе 35.57 дробная часть 0.57 больше 0.5, поэтому в примере число 35.57 было округлено до 36.

Если же дробная часть числа меньше 0.5, то целая часть числа остается без изменений. Например, число 35.47 будет округлено до 35, так как 0.47 меньше 0.5.

Метод ceil - Округляет переданное число в БОЛЬШУЮ сторону

Метод ceil - Округляет переданное число в БОЛЬШУЮ сторону

Продолжаем работать с методами объекта Math. Рассмотрим метод ceil (в переводе - потолок), который также округляет переданное ему число.

Но если метод round проводит округление чисел по классической схеме, то метод ceil округляет дробное десятичное число в БОЛЬШУЮ сторону.

<script type="text/javascript">

var age = 35.07;

age = Math.ceil(age); /* Округляем значение переменной age в большую сторону */

document.write(age);

</script>

Итак, метод ceil округлил число 35.07 до 36, то есть в большую сторону. Несмотря на то, что 0.07 меньше 0.5 (см. правила стандартного округления чисел).

Метод floor - Округляет переданное число в МЕНЬШУЮ сторону

Метод floor - Округляет переданное число в МЕНЬШУЮ сторону

Теперь рассмотрим метод floor (в переводе - пол), который работает противоположно методу ceil, т.е. он округляет дробное число в МЕНЬШУЮ сторону.

<script type="text/javascript">

var age = 35.97;

age = Math.floor(age); /* Округляем значение переменной age в меньшую сторону */

document.write(age);

</script>

Как видите, метод floor округлил число 35.97 до 35, то есть в меньшую сторону. Несмотря на то, что 0.97 больше 0.5 (см. правила стандартного округления чисел).

Домашнее задание - Объект Math - Округление чисел

Домашнее задание - Объект Math - Округление чисел

В этом уроке были рассмотрены методы объекта Math, позволяющими округлять дробные десятичные числа.

Теперь нужно выполнить домашнее задание.

Ваша задача написать функцию, которая принимает два параметра.
1. Массив, состоящий из чисел с дробями.
2. Метод округления "round", "ceil" или "floor".

На выходе функция должна выводить этот же массив, но при этом все элементы массива, должны быть округлены с помощью указанного во втором параметре метода объекта Math.

Исходный массив:

var numberArray = [34.82, 12.90, 17.01, 78.51];

Сначала решение этого задания может казаться практически идентичным с решениями домашних задач из первых трёх уроков этой темы. Но не все так просто...

Решение №1 - Внимание

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

<script type = "text/javascript">

var numberArray = [34.82, 12.90, 17.01, 78.51];

function decimal(anyArray,method) /* Создаем функцию с двумя параметрами */
{

for (i = 0; i < anyArray.length; i++) /* Перебираем элементы массива */

{
document.write(anyArray[i] + " - исходный элемент массива <br />") /* Выводим текущий элемент массива */

anyArray[i] = Math.method(anyArray[i]); /* При помощи одного из методов объекта Math округляем текущий элемент массива */


document.write(anyArray[i] + "<p>") /* Выводим ОКРУГЛЕННЫЙ элемент массива */
}

}

decimal(numberArray, round) /* Вызываем функцию и указываем для нее два параметра. Но НЕЛЬЗЯ указывать ИМЯ метода в качестве параметра функции */

</script>

В этом решении создаем функцию с двумя параметрами, а когда ее вызываем, то в качестве параметров функции пробуем указать исходный массив и ИМЯ одного методов:
decimal(numberArray, round) - в данном случае round.

Но результата мы не получим, так как НЕЛЬЗЯ указывать ИМЯ метода в качестве параметра функции.

Обратите внимание: ведь не случайно в условии задачи имена методов "round", "ceil" и "floor" заключены в кавычки.

decimal(numberArray, "round") - но такая запись тоже не будет верной!!!

Решение №2 - Корректируем предыдущее решение

Можно решить задачу, указав для функции один параметр.

<script type = "text/javascript">

var numberArray = [34.82, 12.90, 17.01, 78.51];

function decimal(anyArray) /* Создаем функцию с одним параметром */
{

for (i = 0; i < anyArray.length; i++) /* Перебираем элементы массива */

{
document.write(anyArray[i] + " - исходный элемент массива <br />") /* Выводим текущий элемент массива */

anyArray[i] = Math.round(anyArray[i]); /* При помощи метода round объекта Math округляем текущий элемент массива */


document.write(anyArray[i] + " - Округленный элемент <p>") /* Выводим ОКРУГЛЕННЫЙ элемент массива */
}

}

decimal(numberArray) /* Вызываем функцию и указываем один параметр - исходный массив */

</script>

Домашнее задание - Решение №2 - Функция с одним параметром

34.82 - исходный элемент массива
35 - Округленный элемент

12.9 - исходный элемент массива
13 - Округленный элемент

17.01 - исходный элемент массива
17 - Округленный элемент

78.51 - исходный элемент массива
79 - Округленный элемент

Здесь удалось достичь нужного результата: метод round округлил все числа по классическим правилам. Но не выполнено условие, так как функция принимает лишь один параметр.

Решение №3 - Функция с двумя параметрами

Здесь задача решена правильно. Для этого нужно было вспомнить тему условий в javascript и применить несколько условий одновременно.

<script type = "text/javascript">

var numberArray = [34.82, 12.90, 17.01, 78.51];

function decimal(anyArray,method)
{
for (i = 0; i < anyArray.length; i++)
{
document.write(anyArray[i] + " - исходный элемент массива <br />");

if (method == "round") /* 1-е условие */
{
anyArray[i] = Math.round(anyArray[i]);
document.write(anyArray[i] + " - стандартное округление <p>")
}

else if(method == "ceil") /* 2-е условие */
{
anyArray[i] = Math.ceil(anyArray[i]);
document.write(anyArray[i] + " - округляем в БОЛЬШУЮ сторону <p>")
}

else if(method == "floor") /* 3-е условие */
{
anyArray[i] = Math.floor(anyArray[i]);
document.write(anyArray[i] + " - округляем в МЕНЬШУЮ сторону <p>")
}

}
}
decimal(numberArray, "ceil")/* Вторым параметром функции - в кавычках указываем имя одного из методов */

</script>

Домашнее задание - Решение №3 - Функция с двумя параметрами

34.82 - исходный элемент массива
35 - округляем в БОЛЬШУЮ сторону

12.9 - исходный элемент массива
13 - округляем в БОЛЬШУЮ сторону

17.01 - исходный элемент массива
18 - округляем в БОЛЬШУЮ сторону

78.51 - исходный элемент массива
79 - округляем в БОЛЬШУЮ сторону

Это правильное решение Домашнего задания. Здесь для функции указаны два параметра согласно условию.

Попробуйте в последней строке этого решения:
decimal(numberArray, "ceil") в качестве второго параметра функции указать имена других методов "round" и "floor" объекта Math.

Решение №4 - Функция с двумя параметрами + метод prompt

Я решил немного оптимизировать предыдущее решение и добавил метод prompt, который вызывает модальное окно, содержащее поле для ввода информации.

Теперь благодаря этому можно будет ввести название одного из методов round, floor или ceil в поле для ввода и получить соответствующий результат.

<script type = "text/javascript">

var numberArray = [34.82, 12.90, 17.01, 78.51];

function decimal(anyArray,method)
{
for (i = 0; i < anyArray.length; i++)
{
document.write(anyArray[i] + " - исходный элемент массива <br />");

if (method == "round") /* 1-е условие */
{
anyArray[i] = Math.round(anyArray[i]);
document.write(anyArray[i] + " <p>")
}

else if(method == "ceil") /* 2-е условие */
{
anyArray[i] = Math.ceil(anyArray[i]);
document.write(anyArray[i] + " <p>")
}

else if(method == "floor") /* 3-е условие */
{
anyArray[i] = Math.floor(anyArray[i]);
document.write(anyArray[i] + " <p>")
}

}
}

/* Добавляем метод prompt */

var method = prompt("Введите один из методов: round, ceil или floor");

if (method == "floor") /* 1-е условие */
{
document.write("Вы ввели метод " + method + " , который округляет числа в МЕНЬШУЮ сторону <p>")
}

else if (method == "round") /* 2-е условие */
{
document.write("Вы ввели метод " + method + " , который округляет числа по стандартным правилам <p>")
}

else if (method == "ceil") /* 3-е условие */
{
document.write("Вы ввели метод " + method + " , который округляет числа в БОЛЬШУЮ сторону <p>")
}

else /* Иначе... */
{
document.write("Вы не ввели или ошибочно ввели метод <p>")
}

decimal(numberArray, method) /* Вызываем функцию */

</script>

Вот так работают методы round, floor или ceil объекта Math, которые округляют дробные числа.

Главная Изучаем JavaScript Объект Math - Округление чисел Метод random - Возвращает случайное число

Ваши комментарии к уроку:

Комментариев нет...

Добавить комментарий:

Ваше Имя:*
Комментарий:*
Ответьте на вопрос: *
Сколько дней в Високосном году?
* - поля обязательные для заполнения.
JavaScript
Частота просмотра уроков
Дизайн сайтов
ПОИСК ПО САЙТУ:

Моё имя Антон. Связаться со мною Вы можете по e-mail: averagev@mail.ru