Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Часто результатом расчётов бывает число с большим количеством знаков после запятой. Если это число будет использовано для дальнейших расчётов, то его можно оставить в таком виде. Но иногда требуется округление числа, например для вывода на страницу. В JavaScript округление чисел осуществляется несколькими методами.

Метод Math.round() округляет значение до целого числа.

Math.round (число)

Округление числа производится по математическим правилам. То есть, если после запятой идёт цифра от 0 до 4, то дробная часть просто отбрасывается. А если после запятой идёт цифра от 5 до 9, то дробрая часть отбрасывается, а к целой части прибавляется единица. пример:

JavaScript:

Есть ещё два метода, которые округляют число до целого значения. Метод Math.floor() округляет в меньшую сторону. Он отбрасывает дробную часть числа. А метод Math.ceil() округляет в большую сторону. Он отбрасывает дробную часть, а к целой части прибавляет единицу. Пример:

Конечно, 5 - (-2) это 5+2. Не завбывайте, что число 5 Вы в этой формуле не получите. Максимальное будет 4.999999999. Полученные значения можно округлить до нужной точности.

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

целое число = Math.floor (минимум + Math.random() * (максимум + 1 - минимум)

Выведем числа от 10 до 15:

20
21
22
23
24

for (i=1; i= (больше или равно), 3); //false console.log(5>=3); //true

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

Например, в JavaScript сумма чисел (0.2 + 0.4) не равна 0.6:

Console.log((0.2+0.4)==0.6); //false

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

Например, число 0.25 10 в двоичную систему преобразуется точно.

0.125 × 2 = 0.25 | 0 0.25 × 2 = 0.5 | 0 0.5 × 2 = 1 | 1 0.125 10 = 0.001 2

Например, число 0.2 10 можно преобразовать в 2 систему только с определённой точностью:

0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 ... 0.2 10 = 0.001100110011... 2

В результате эти погрешности скажутся при вычисления суммы двух чисел и результатах сравнения. Т.е. получится что на самом деле JavaScript будет видет эту запись следующим образом:

0.6000000000000001==0.6

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

Например, сравнить числа до 2 знаков после запятой используя методы toFixed() и toPrecision() :

//метод toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //метод toPrecision() console.log((0.2+0.4).toPrecision(2)==(0.6).toPrecision(2)); //true

Основные математические операции

В JavaScript существуют следующие математические операторы: + (сложение), - (вычитание), * (умножение), / (деление), % (остаток от деления), ++ (увелить значение на 1), -- (уменьшить значение на 1).

6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, т.е. 6:3=2 => 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

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

var age = 35.97 ;

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

document.write (age );

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

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

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

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

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

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

var numberArray = ;

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

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

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

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

for (i = 0 ; i < anyArray .length ; i ++ )

{
document.write (anyArray
" )

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

document.write (anyArray + "

" )
}

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

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

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

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

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

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

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

var numberArray = ;

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

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

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

/* При помощи метода round объекта Math округляем текущий элемент массива */

document.write (anyArray + " - Округленный элемент

" ) /* Выводим ОКРУГЛЕННЫЙ элемент массива */
}

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


35 - Округленный элемент


13 - Округленный элемент


17 - Округленный элемент


79 - Округленный элемент

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

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

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

var numberArray = ;

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

if (method
{
anyArray = Math .round (anyArray );
document.write (anyArray + " - стандартное округление

" )
}

Else if(method
{

document.write (anyArray + " - округляем в БОЛЬШУЮ сторону

" )
}

else if(method
{

document.write (anyArray + " - округляем в МЕНЬШУЮ сторону

" )
}

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

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

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

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

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

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

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

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

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

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

var numberArray = ;

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

if (method == "round" ) /* 1-е условие */
{
anyArray = Math .round (anyArray );
document.write (anyArray + "

" )
}

Else if(method == "ceil" ) /* 2-е условие */
{
anyArray = Math .ceil (anyArray );
document.write (anyArray + "

" )
}

else if(method == "floor" ) /* 3-е условие */
{
anyArray = Math .floor (anyArray );
document.write (anyArray + "

" )
}

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

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

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

" )
}

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

" )
}

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

" )
}

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

" )
}

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

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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: