Функция округления – C++ – Киберфорум

Функции округления floor(x[, N]) Возвращает наибольшее круглое число, которое меньше или равно, чем x. Круглым называетс

Содержание

прототип round() [Согласно стандарту C ++ 11]

double round(double x);float round(float x);long double round(long double x);double round(T x); // For integral type

Функция round() принимает единственный аргумент и возвращает значение типа double, float или long double. Эта функция определена в заголовочном файле <cmath>.

floor(x[, N]) 

Возвращает наибольшее круглое число, которое меньше или равно, чем x.
Круглым называется число, кратное 1 / 10N или ближайшее к нему число соответствующего типа данных, если 1 / 10N не представимо точно.
N – целочисленная константа, не обязательный параметр. По умолчанию – ноль, что означает – округлять до целого числа.
N может быть отрицательным.

Примеры: floor(123.45, 1) = 123.4, floor(123.45, -1) = 120.

x – любой числовой тип. Результат – число того же типа.
Для целочисленных аргументов имеет смысл округление с отрицательным значением N (для неотрицательных N, функция ничего не делает).
В случае переполнения при округлении (например, floor(-128, -1)), возвращается implementation specific результат.

Округление путем изменения формата ячейки.

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

  1. Выберите ячейки, вид которых нужно изменить.
  2. Откройте диалоговое окно форматирования, нажав Ctrl + 1, или же щелкните правой кнопкой мыши ячейку и выберите тот же пункт в контекстном меню.
  3. На вкладке Число, выберите Числовой или Денежный формат, и укажите количество знаков после запятой, которое вы хотите видеть. Предварительный просмотр результата сразу же появится в поле Образец.
  4. Нажмите кнопку ОК, чтобы сохранить изменения и закрыть диалог.

Важно! Этот метод изменяет формат отображения без изменения фактического значения, хранящегося в ячейке. Если вы ссылаетесь на эту ячейку в любой формуле, во всех расчетах будет использоваться исходное значение. Это может оказаться существенным, когда вы производите вычисления (к примеру, рассчитываете НДС или сумму скидки), а затем считаете итоги. Часто оказывается, что если сложить на калькуляторе значения из таблицы, которые мы распечатали, то сумма не совпадёт с итоговым значением. Это как раз из-за того, что числа, которые мы видим, и реальные данные, с которыми производятся математические операции — это совсем не одно и то же.

Введение в тему

Зачастую при вычислениях, а их в работе программиста не мало, мы сталкиваемся с задачами округления. Округлять можно по разному: вверх, вниз и с разной степенью точности. В языке Пайтон для выполнения этого класса задач предусмотрено несколько доступных инструментов: функции round(), int(), а так же модуль math. Но, есть и подводные камни. Обо всём этом Вы узнаете из данного урока.

Описание

пример

Y = round(X) раунды каждый элемент X до ближайшего целого числа. В случае ничьей, где элемент имеет дробную часть точно 0.5, round функционируйте раунды далеко от нуля до целого числа с большей величиной.

пример

Y = round(X,N) раунды к N цифры:

  • N > 0: вокруг к N цифры справа от десятичной точки.

  • N = 0: вокруг до ближайшего целого числа.

  • N < 0: вокруг к N цифры слева от десятичной точки.

пример

Y = round(X,N,type) задает тип округления. Задайте ‘significant’ к раунду к N значительные цифры (считаемый от крайней левой цифры). В этом случае, N должно быть положительное целое число.

пример

Y = round(t) раунды каждый элемент duration массив t к самому близкому номеру секунд.

пример

Y = round(t,unit) раунды каждый элемент t к самому близкому количеству заданного модуля времени.

Параметры

Принимает значение одного аргумента для округления.

Возвращаемое значение

Возвращает целое значение, ближайшее к x, с округлением до середины от нуля.

Как round() работает в C ++?

#include <iostream>#include <cmath>using namespace std;int main(){ double x = 11.16, result; result = round(x); cout << “round(” << x << “) = ” << result << endl; x = 13.87; result = round(x); cout << “round(” << x << “) = ” << result << endl; x = 50.5; result = round(x); cout << “round(” << x << “) = ” << result << endl; x = -11.16; result = round(x); cout << “round(” << x << “) = ” << result << endl; x = -13.87; result = round(x); cout << “round(” << x << “) = ” << result << endl; x = -50.5; result = round(x); cout << “round(” << x << “) = ” << result << endl; return 0;}

Когда вы запустите программу, вывод будет:

round(11.16) = 11round(13.87) = 14round(50.5) = 51round(-11.16) = -11round(-13.87) = -14round(-50.5) = -51

Различие округления в Python 2 и Python 3

В Python 2 и Python 3 реализованы разные принципы округления.

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

Во втором Python есть только 4 цифры, которые ведут к преобразованию к меньшему значению — 1, 2, 3 и 4. Также 5 цифр, которые приводят к большему значению — 5, 6, 7, 8, 9. Такое неравное распределение ведет к тому, что погрешность постоянно нарастает.

Python 2 по правилам арифметического округления преобразует число 5,685 в 5,68 до второго знака. Такая погрешность связана с тем, что десятичные цифры float в двоичном коде невозможно корректно представить.

В Python 3 используются принципы банковского округления. Это означает, что преобразование производится к ближайшему четному. В таком случае также не удается полностью избежать возникающих ошибок, но программисты добиваются точности в подсчетах.

2,5 по правилам банковского преобразования будет равно 2, а 3,5 = 4 (значения возводятся к близкому четному). Минимизировать погрешности можно благодаря практически равной вероятности, что перед пятеркой будет четное или нечетное число.

Расширенные возможности

“Высокие” массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

  • Генерация кода поддерживает только синтаксис Y = round(X).

  • Генерация кода не поддерживает char или logical типы данных для X.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Указания и ограничения по применению:

  • Генерация кода поддерживает только синтаксис Y = round(X).

  • Генерация кода не поддерживает char или logical типы данных для X.

Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool.

Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Указания и ограничения по применению:

  • Эти синтаксисы не поддерживаются:

    Y = round(X,N)

    Y = round(X,N,type)

Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).

Представлено до R2006a

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...