Rounding helpers turn fractional values into nearby whole-number choices.

floor `std::floor` moves to the greatest whole number not greater than the value.
ceil `std::ceil` moves to the smallest whole number not less than the value.
round `std::round` moves to the nearest whole number.

Round Values

raw
round_values.cpp
Replay: real traced execution (multi-file project)
#include <cmath>
#include <iostream>

int main() {
    double raw = 3.6;

    int down = static_cast<int>(std::floor(raw));
    int up = static_cast<int>(std::ceil(raw));
    int nearest = static_cast<int>(std::round(raw));

    std::cout << "raw=" << raw << std::endl;
    std::cout << "down=" << down << std::endl;
    std::cout << "up=" << up << std::endl;
    std::cout << "nearest=" << nearest << std::endl;
    return 0;
}
#include <cmath>
#include <iostream>

int main() {
    double raw = 2.2;

    int down = static_cast<int>(std::floor(raw));
    int up = static_cast<int>(std::ceil(raw));
    int nearest = static_cast<int>(std::round(raw));

    std::cout << "raw=" << raw << std::endl;
    std::cout << "down=" << down << std::endl;
    std::cout << "up=" << up << std::endl;
    std::cout << "nearest=" << nearest << std::endl;
    return 0;
}
#include <cmath>
#include <iostream>

int main() {
    double raw = -1.7;

    int down = static_cast<int>(std::floor(raw));
    int up = static_cast<int>(std::ceil(raw));
    int nearest = static_cast<int>(std::round(raw));

    std::cout << "raw=" << raw << std::endl;
    std::cout << "down=" << down << std::endl;
    std::cout << "up=" << up << std::endl;
    std::cout << "nearest=" << nearest << std::endl;
    return 0;
}
  1. raw ← 3.6, down ← 3, up ← 4, nearest ← 4

    4int main() {5    double raw→ 3.6 = 3.6; //@raw=2.2, -1.767    int down→ 3 = static_cast<int>(std::floor(raw3.6));8    int up→ 4 = static_cast<int>(std::ceil(raw3.6));9    int nearest→ 4 = static_cast<int>(std::round(raw3.6));1011    std::cout << "raw=" << raw3.6 << std::endl;12    std::cout << "down=" << down3 << std::endl;13    std::cout << "up=" << up4 << std::endl;14    std::cout << "nearest=" << nearest4 << std::endl;15    return 0;16}
    outputraw=3.6
    down=3
    up=4
    nearest=4
  1. raw ← 2.2, down ← 2, up ← 3, nearest ← 2

    4int main() {5    double raw→ 2.2 = 2.2;67    int down→ 2 = static_cast<int>(std::floor(raw2.2));8    int up→ 3 = static_cast<int>(std::ceil(raw2.2));9    int nearest→ 2 = static_cast<int>(std::round(raw2.2));1011    std::cout << "raw=" << raw2.2 << std::endl;12    std::cout << "down=" << down2 << std::endl;13    std::cout << "up=" << up3 << std::endl;14    std::cout << "nearest=" << nearest2 << std::endl;15    return 0;16}
    outputraw=2.2
    down=2
    up=3
    nearest=2
  1. raw ← -1.7, down ← -2, up ← -1, nearest ← -2

    4int main() {5    double raw→ -1.7 = -1.7;67    int down→ -2 = static_cast<int>(std::floor(raw-1.7));8    int up→ -1 = static_cast<int>(std::ceil(raw-1.7));9    int nearest→ -2 = static_cast<int>(std::round(raw-1.7));1011    std::cout << "raw=" << raw-1.7 << std::endl;12    std::cout << "down=" << down-2 << std::endl;13    std::cout << "up=" << up-1 << std::endl;14    std::cout << "nearest=" << nearest-2 << std::endl;15    return 0;16}
    outputraw=-1.7
    down=-2
    up=-1
    nearest=-2