Округление вверх и вниз числа С++

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

Например, если число 3.6, моя программа должна округлить ближайшее число, которое равно 4, а если число 3.4, оно будет округлено до 3.

Я попытался использовать библиотеку ceil, чтобы получить среднее значение из 3 элементов.

results = ceil((marks1 + marks2 + marks3)/3)

Однако ceil только округляет число вниз, но не свертывает номер вверх.

Там 1 алгоритм наткнулся на

var roundedVal = Math.round(origVal*20)/20;

но я все еще не могу определить формулу для некоторой проблемы.

Ответ 1

std::ceil 

округляется до ближайшего целого числа

std::floor 

округляется до ближайшего целого числа

std::round 

выполняет ожидаемое поведение

просьба указать пример использования с номерами, если это не дает вам то, что вам нужно!

Ответ 2

Нужная функция называется round, хотите верьте, хотите нет.

ceil округляется, кстати. То есть с ближайшим большим целым числом. floor округляется.

Ответ 3

std::round может быть тот, который вы ищете. Однако имейте в виду, что он возвращает float. Вы можете попробовать lround или llround, чтобы получить результат длинным или длинным (С++ 11).

http://en.cppreference.com/w/cpp/numeric/math/round

Ответ 4

Вам не нужна функция для округления в C или C++. Вы можете просто использовать простой трюк. Добавьте 0,5, а затем приведите к целому числу. Это, вероятно, все вокруг делает в любом случае.

double d = 3.1415;
double d2 = 4.7;
int i1 = (int)(d + 0.5);
int i2 = (int)(d2 + 0.5);

i1 - 3, а i2 - 5. Вы можете проверить это сами.

Ответ 5

В c++, включая библиотеку cmath, мы можем использовать различные функции, которые округляют значение как вверх, так и вниз.

std::trunc

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

std::ceil

Используется для округления до ближайшего целочисленного значения.

std::floor

Используется для округления до ближайшего целочисленного значения.

std::round

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