5 методов округления чисел в C++: подробное руководство

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

Метод 1: использование функции Floor() из библиотеки
Функция Floor() — это стандартная библиотечная функция C++, которая округляет число до ближайшего целого числа. Он возвращает двойное значение, поэтому вам может потребоваться привести результат к целому числу, если требуется целочисленное значение. Вот пример:

#include <iostream>
#include <cmath>
int main() {
    double num = 9.8;
    int roundedDown = static_cast<int>(std::floor(num));
    std::cout << "Rounded down value: " << roundedDown << std::endl;
    return 0;
}

Выход:
Округленное значение в меньшую сторону: 9

Метод 2: усечение дробной части
Другой способ округления числа в меньшую сторону — усечение дробной части. Этот метод просто удаляет десятичную часть числа, эффективно округляя его в меньшую сторону. Вот пример:

#include <iostream>
int main() {
    double num = 9.8;
    int roundedDown = static_cast<int>(num);
    std::cout << "Rounded down value: " << roundedDown << std::endl;
    return 0;
}

Выход:
Округленное значение в меньшую сторону: 9

Метод 3: использование целочисленного деления
Целочисленное деление можно использовать для округления в меньшую сторону. При делении числа на 1 и приведении результата к целому числу дробная часть отбрасывается, что приводит к округлению в меньшую сторону. Вот пример:

#include <iostream>
int main() {
    double num = 9.8;
    int roundedDown = num / 1;
    std::cout << "Rounded down value: " << roundedDown << std::endl;
    return 0;
}

Выход:
Округленное значение в меньшую сторону: 9

Метод 4: побитовые операции (для положительных чисел)
Для положительных чисел можно использовать побитовые операции для округления в меньшую сторону. Выполняя побитовую операцию «И» с маской, которая устанавливает дробные биты в ноль, число округляется в меньшую сторону. Вот пример:

#include <iostream>
int main() {
    double num = 9.8;
    int roundedDown = static_cast<int>(num) & -1;
    std::cout << "Rounded down value: " << roundedDown << std::endl;
    return 0;
}

Выход:
Округленное значение в меньшую сторону: 9

Метод 5: Побитовые операции (для отрицательных чисел)
Побитовые операции также можно использовать для округления отрицательных чисел. Выполняя побитовую операцию «ИЛИ» с маской, которая устанавливает дробные биты в единицу, дробная часть фактически усекается, что приводит к округлению в меньшую сторону. Вот пример:

#include <iostream>
int main() {
    double num = -9.8;
    int roundedDown = static_cast<int>(num) | 0x80000000;
    std::cout << "Rounded down value: " << roundedDown << std::endl;
    return 0;
}

Выход:
Округленное значение в меньшую сторону: -10

В этой записи блога мы рассмотрели пять различных методов округления чисел в C++. Эти методы включали использование функции Floor() из библиотеки , усечение дробной части, выполнение целочисленного деления и использование побитовых операций как для положительных, так и для отрицательных чисел. В зависимости от ваших конкретных требований и соображений производительности вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Теперь у вас есть полный набор методов округления чисел в C++!