Arredondamento de números

C++:
Arredondamento de números

Como:

C++ oferece várias maneiras de arredondar números, como floor(), ceil(), e round():

#include <iostream>
#include <cmath> // para funções de arredondamento

int main() {
    double num = 3.14;

    std::cout << "floor: " << std::floor(num) << "\n"; // Saída: floor: 3
    std::cout << "ceil: " << std::ceil(num) << "\n";   // Saída: ceil: 4
    std::cout << "round: " << std::round(num) << "\n"; // Saída: round: 3

    // Para precisão fixa, como arredondar para duas decimais:
    double precise_num = 3.146;
    double multiplicador = 100.0;
    double arredondado = std::round(precise_num * multiplicador) / multiplicador;

    std::cout << "arredondado para duas decimais: " << arredondado << "\n"; // Saída: arredondado para duas decimais: 3.15

    return 0;
}

Mergulho Profundo

Antes do C++11, o arredondamento dependia de técnicas manuais ou bibliotecas não-padrão. Hoje, <cmath> fornece métodos robustos. floor() arredonda para baixo, ceil() arredonda para cima, enquanto round() vai para o inteiro mais próximo, lidando até com empates (casos de 0.5) arredondando para o número par.

Entender o comportamento dessas funções é crucial; por exemplo, números negativos podem confundir (std::round(-2.5) resulta em -2.0).

Alternativas? Converter para um int depois de adicionar 0.5 para números positivos era um truque clássico, mas erra com negativos e não é agnóstico de tipo. Bibliotecas como Boost podem oferecer abordagens mais refinadas, enquanto extensões de linguagem ou intrínsecos do compilador podem otimizar para hardware específico.

Veja Também