Numerojen pyöristäminen

C++:
Numerojen pyöristäminen

Kuinka:

C++ tarjoaa useita tapoja pyöristää numeroita, kuten floor(), ceil() ja round():

#include <iostream>
#include <cmath> // pyöristysfunktioita varten

int main() {
    double num = 3.14;

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

    // Määritellylle tarkkuudelle pyöristäminen, kuten kahden desimaalin tarkkuuteen:
    double precise_num = 3.146;
    double multiplier = 100.0;
    double rounded = std::round(precise_num * multiplier) / multiplier;

    std::cout << "pyöristettynä kahteen desimaaliin: " << rounded << "\n"; // Tuloste: pyöristettynä kahteen desimaaliin: 3.15

    return 0;
}

Syväsukellus

Ennen C++11-versiota, pyöristämisessä turvauduttiin manuaalisiin tekniikoihin tai ei-standardi kirjastoihin. Nykyään <cmath> tarjoaa vankkoja metodeja. floor() pyöristää alaspäin, ceil() ylöspäin, kun taas round() menee lähimpään kokonaislukuun, käsitellen jopa tasapelistilanteet (0.5 tapaukset) pyöristämällä parilliseen numeroon.

Näiden funktioiden käyttäytymisen ymmärtäminen on elintärkeää; esimerkiksi negatiiviset numerot voivat aiheuttaa sekaannusta (std::round(-2.5) tuottaa -2.0).

Vaihtoehtoja? Casting intiksi 0.5 lisäämisen jälkeen positiivisille numeroille oli perinteinen kikka, mutta se epäonnistuu negatiivisilla ja ei ole tyypistä riippumaton. Kirjastot, kuten Boost, voivat tarjota hienovaraisempia lähestymistapoja, kun taas kielilisäykset tai kääntäjän sisäiset funktiot voivat optimoida tiettyä laitteistoa varten.

Katso Myös