double roundToNearest(double value, RoundingMode mode = RoundingMode::NEAREST) {
    switch (mode) {
        case RoundingMode::UP:
            return std::ceil(value);
        case RoundingMode::DOWN:
            return std::floor(value);
        case RoundingMode::NEAREST:
        default:
            return std::round(value);
    }
}