viernes, 29 de junio de 2012

Como redondear hacia arriba una division de enteros en C

Como es bien sabido al dividir en C las variables enteras "a" y "b" usando el operador "/" (a/b), el compilador redondea por defecto hacia abajo el resultado si el destino de la division es otra variable entera "c".
Si lo que deseas es lo contrario encontre por la red una manera de redondear hacia arriba "c=a/b", aqui hago un copy&paste:

c = (x + y - 1) / y;

Pero hay que tener cuidado con esto ya que para numeros grandes "x + y" puede producir overflow, para evitarlo:

c = 1 + ((x - 1) / y);

No hay comentarios:

Publicar un comentario