Arrotondamento dei numeri

C++:
Arrotondamento dei numeri

Come fare:

C++ offre diverse modalità per arrotondare i numeri, come floor(), ceil(), e round():

#include <iostream>
#include <cmath> // per le funzioni di arrotondamento

int main() {
    double num = 3.14;

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

    // Per una precisione fissa, come l'arrotondamento a due decimali:
    double precise_num = 3.146;
    double multiplier = 100.0;
    double rounded = std::round(precise_num * multiplier) / multiplier;

    std::cout << "arrotondato a due decimali: " << rounded << "\n"; // Output: arrotondato a due decimali: 3.15

    return 0;
}

Approfondimento

Prima di C++11, per arrotondare si faceva affidamento su tecniche manuali o librerie non standard. Oggi, <cmath> fornisce metodi robusti. floor() arrotonda verso il basso, ceil() arrotonda verso l’alto, mentre round() va all’intero più vicino, gestendo anche i casi di parità (0,5) arrotondando al numero pari.

Comprendere il comportamento di queste funzioni è cruciale; per esempio, i numeri negativi potrebbero ingannarti (std::round(-2.5) produce -2.0).

Alternative? Convertire in un int dopo aver aggiunto 0,5 per i numeri positivi era un trucco classico ma sbaglia con i negativi e non è agnostico rispetto al tipo. Librerie come Boost possono offrire approcci più sfumati, mentre estensioni del linguaggio o intrinseci del compilatore possono ottimizzare per hardware specifico.

Vedi Anche