Я пытаюсь разрешить моей программе округлять число вверх и вниз соответственно.
Например, если номер 3.6
моя программа должна округлить до ближайшего числа, равного 4, и если число 3.4
, будет округлено до 3.
Я пытался использовать ceil
Библиотека, чтобы получить в среднем 3 предмета.
results = ceil((marks1 + marks2 + marks3)/3)
Тем не менее ceil
только округляет число вниз, но не сворачивает число.
Есть 1 алгоритм, на который я наткнулся
var roundedVal = Math.round(origVal*20)/20;
но я все еще не могу придумать формулу для какой-то проблемы.
std::ceil
округляет до ближайшего целого
std::floor
округляет до ближайшего целого
std::round
выполняет поведение, которое вы ожидаете
Пожалуйста, дайте пример использования с номерами, если это не дает вам то, что вам нужно!
Функция, которая вам нужна, называется круглый, хочешь верь, хочешь нет.
ceil
округляет вверх, кстати. То есть с ближайшим большим целым числом. floor
округляет вниз.
std::round
может быть тот, который вы ищете. Однако имейте в виду, что он возвращает число с плавающей запятой. Вы можете попробовать lround
или же llround
чтобы получить результат в long или long long (C ++ 11).
Вам не нужна функция для округления в 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. Вы можете проверить это сами.
В c ++, включая библиотеку cmath, мы можем использовать различные функции, которые округляют значение как вверх, так и вниз.
std::trunc
Это просто усекает десятичную часть, то есть цифры после десятичной точки независимо от того, что такое десятичная дробь.
std::ceil
Это используется для округления до ближайшего целочисленного значения.
std::floor
Это используется для округления до ближайшего целочисленного значения.
std::round
Это округляет до ближайшего целочисленного значения, в зависимости от того, какое из значений ближе всего, то есть оно может округляться вверх или вниз.