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);
}
}