C ++: arredondando para o múltiplo mais próximo de um número
OK - Estou quase envergonhado postando isso aqui (e vou excluir se alguém votar para fechar), pois parece uma pergunta básica.
Essa é a maneira correta de arredondar para um múltiplo de um número em C ++?
Sei que existem outras perguntas relacionadas a isso, mas estou especificamente interessado em saber qual é a melhor maneira de fazer isso em C ++:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
}
int roundDown = ( (int) (numToRound) / multiple) * multiple;
int roundUp = roundDown + multiple;
int roundCalc = roundUp;
return (roundCalc);
}
Atualização: Desculpe, provavelmente não deixei clara a intenção. aqui estão alguns exemplos:
roundUp(7, 100)
//return 100
roundUp(117, 100)
//return 200
roundUp(477, 100)
//return 500
roundUp(1077, 100)
//return 1100
roundUp(52, 20)
//return 60
roundUp(74, 30)
//return 90
EDIT: Obrigado por todas as respostas. Aqui está o que eu fui:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
}
int remainder = numToRound % multiple;
if (remainder == 0)
{
return numToRound;
}
return numToRound + multiple - remainder;
}