División

07/04/2005 - 19:08 por Diane | Informe spam
Hola, tengo un problema, necesito dividir dos números
enteros X e Y, pero si la división no resulta entera pues
necesito se redondee al mayor, quiero decir:
si tengo 12 / 12 = 1 , bien,
pero si tengo 13 / 12 necesito me de 2 pero él me lo
redondea a 1 :-((...
alguien sabe cómo hacerlo???
mil gracias

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
07/04/2005 - 21:57 | Informe spam
Hola,

Te valdría con:

int cociente = X / Y;
if (X % Y != 0) cociente++;

Slds - Octavio

"Diane" escribió en el mensaje
news:0d4401c53b94$79050d60$
Hola, tengo un problema, necesito dividir dos números
enteros X e Y, pero si la división no resulta entera pues
necesito se redondee al mayor, quiero decir:
si tengo 12 / 12 = 1 , bien,
pero si tengo 13 / 12 necesito me de 2 pero él me lo
redondea a 1 :-((...
alguien sabe cómo hacerlo???
mil gracias
Respuesta Responder a este mensaje
#2 Eduardo Diaz
07/04/2005 - 23:41 | Informe spam
Una forma de hacerlo es:
int Divide(int x, int y)
{
int resto;
int result = Math.DivRem(x, y, out resto);
return resto == 0? result : result+1;
}

En tu post no comentaste nada que pasa con los negativos, pero esta y la
solucion anterior son matematicamente correctas.

Ojo, las operaciones de division y modulo son carisimas (demoran 10 veces
mas que una multiplicacion). Si te interesa el tema del performance puedes
ver mi post al respecto en:
http://www.lnds.net/blogs/lndp/arch...7/24.aspx, por razones de
trabajo he tenido que involucrarme en mejorar el desempeño, y medir el costo
de las operaciones básicas en C# ha sido bien ilustrativo.


"Octavio Hernandez" wrote:

Hola,

Te valdría con:

int cociente = X / Y;
if (X % Y != 0) cociente++;

Slds - Octavio

"Diane" escribió en el mensaje
news:0d4401c53b94$79050d60$
Hola, tengo un problema, necesito dividir dos números
enteros X e Y, pero si la división no resulta entera pues
necesito se redondee al mayor, quiero decir:
si tengo 12 / 12 = 1 , bien,
pero si tengo 13 / 12 necesito me de 2 pero él me lo
redondea a 1 :-((...
alguien sabe cómo hacerlo???
mil gracias



Respuesta Responder a este mensaje
#3 Octavio Hernandez
08/04/2005 - 09:04 | Informe spam
Excelente post, Eduardo!

Fíjate que el coste de DivRem es mayor que la suma de un '/' y un '%'. Si no
recuerdo, el código de máquina del 386 incluye operaciones básicas para
hacer una cosa o la otra, pero no las dos de un golpe. Me imagino (a ciencia
cierta no lo sé) que en MSIL será igual. Creo (habría que mirarlo bien of
course) que el alto coste de DivRem es porque a) ejecuta las dos operaciones
básicas '/' y '%' y b) al fin y al cabo es una función, y hay que pasar los
parámetros en la pila, hacer la llamada, recoger el resultado...

Saludos - Octavio

"Eduardo Diaz" escribió en el
mensaje news:
Una forma de hacerlo es:
int Divide(int x, int y)
{
int resto;
int result = Math.DivRem(x, y, out resto);
return resto == 0? result : result+1;
}

En tu post no comentaste nada que pasa con los negativos, pero esta y la
solucion anterior son matematicamente correctas.

Ojo, las operaciones de division y modulo son carisimas (demoran 10 veces
mas que una multiplicacion). Si te interesa el tema del performance puedes
ver mi post al respecto en:
http://www.lnds.net/blogs/lndp/arch...7/24.aspx, por razones de
trabajo he tenido que involucrarme en mejorar el desempeño, y medir el
costo
de las operaciones básicas en C# ha sido bien ilustrativo.


"Octavio Hernandez" wrote:

Hola,

Te valdría con:

int cociente = X / Y;
if (X % Y != 0) cociente++;

Slds - Octavio

"Diane" escribió en el mensaje
news:0d4401c53b94$79050d60$
Hola, tengo un problema, necesito dividir dos números
enteros X e Y, pero si la división no resulta entera pues
necesito se redondee al mayor, quiero decir:
si tengo 12 / 12 = 1 , bien,
pero si tengo 13 / 12 necesito me de 2 pero él me lo
redondea a 1 :-((...
alguien sabe cómo hacerlo???
mil gracias



Respuesta Responder a este mensaje
#4 Diane
08/04/2005 - 14:37 | Informe spam
muchas gracias a los dos ;-)



Excelente post, Eduardo!

Fíjate que el coste de DivRem es mayor que la suma de


un '/' y un '%'. Si no
recuerdo, el código de máquina del 386 incluye


operaciones básicas para
hacer una cosa o la otra, pero no las dos de un golpe.


Me imagino (a ciencia
cierta no lo sé) que en MSIL será igual. Creo (habría


que mirarlo bien of
course) que el alto coste de DivRem es porque a) ejecuta


las dos operaciones
básicas '/' y '%' y b) al fin y al cabo es una función,


y hay que pasar los
parámetros en la pila, hacer la llamada, recoger el


resultado...

Saludos - Octavio

"Eduardo Diaz"


escribió en el
mensaje news:DC0B5E94-649A-4B3C-8D70-



Una forma de hacerlo es:
int Divide(int x, int y)
{
int resto;
int result = Math.DivRem(x, y, out resto);
return resto == 0? result : result+1;
}

En tu post no comentaste nada que pasa con los




negativos, pero esta y la
solucion anterior son matematicamente correctas.

Ojo, las operaciones de division y modulo son




carisimas (demoran 10 veces
mas que una multiplicacion). Si te interesa el tema




del performance puedes
ver mi post al respecto en:





http://www.lnds.net/blogs/lndp/arch...7/24.aspx,
por razones de
trabajo he tenido que involucrarme en mejorar el




desempeño, y medir el
costo
de las operaciones básicas en C# ha sido bien




ilustrativo.


"Octavio Hernandez" wrote:

Hola,

Te valdría con:

int cociente = X / Y;
if (X % Y != 0) cociente++;

Slds - Octavio

"Diane"






escribió en el mensaje
news:0d4401c53b94$79050d60$
Hola, tengo un problema, necesito dividir dos números
enteros X e Y, pero si la división no resulta entera






pues
necesito se redondee al mayor, quiero decir:
si tengo 12 / 12 = 1 , bien,
pero si tengo 13 / 12 necesito me de 2 pero él me lo
redondea a 1 :-((...
alguien sabe cómo hacerlo???
mil gracias









.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida