Solución:
Aproveche la división de enteros, que trunca la parte decimal del cociente. Para que parezca que se está redondeando, agregue 99 primero.
int rounded = ((num + 99) / 100 ) * 100;
Ejemplos:
801: ((801 + 99) / 100) * 100 → 900 / 100 * 100 → 9 * 100 = 900
99 : ((99 + 99) / 100) * 100 → 198 / 100 * 100 → 1 * 100 = 100
14 : ((14 + 99) / 100) * 100 → 113 / 100 * 100 → 1 * 100 = 100
452: ((452 + 99) / 100) * 100 → 551 / 100 * 100 → 5 * 100 = 500
203: ((203 + 99) / 100) * 100 → 302 / 100 * 100 → 3 * 100 = 300
200: ((200 + 99) / 100) * 100 → 299 / 100 * 100 → 2 * 100 = 200
Cita de la especificación del lenguaje Java relevante, Sección 15.17.2:
La división de enteros se redondea hacia 0. Es decir, el cociente producido para los operandos nyd que son enteros después de la promoción numérica binaria (§5.6.2) es un valor entero q cuya magnitud es lo más grande posible mientras satisface | d · q | ≤ | n |.
Aquí hay un algoritmo que creo que funciona para cualquier caso “múltiplo de”. Déjame saber lo que piensas.
int round (int number,int multiple){
int result = multiple;
//If not already multiple of given number
if (number % multiple != 0){
int division = (number / multiple)+1;
result = division * multiple;
}
return result;
}
Prueba esto:
(int) (Math.ceil(number/100.0))*100
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)