Problema con divisiones

09/01/2007 - 12:58 por Carmelo J. Morales Muñoz | Informe spam
hola!

tengo una división que no da lo que tiene que dar, es decir, redondea y pasa
de los decimales.

Pongo el codigo :

// Realizo cálculos.

// --

// Peso salud

int k;

if (sexo == "H") {

k = 4; // valor para hombres

} else {

k = 2; // valor para mujeres

}

Single pesoSalud;

pesoSalud = talla - 100 - ((talla - 150) / k);



Con estos datos de prueba falla:


talla: 163

k = 2;

Debería de dar (calculadora en mano) 56.5 y da 57. Ha redondeado por su
cuenta y no quiero que haga eso. ¿como lo soluciono?.



bye!

Preguntas similare

Leer las respuestas

#1 Carmelo J. Morales Muñoz
09/01/2007 - 13:09 | Informe spam
Creo que mi problema radicaba en que talla era del tipo Int, y la división
por consiguiente era un entero(se perdian decimales).

un saludo1
Respuesta Responder a este mensaje
#2 Ana Zuluaga
09/01/2007 - 13:14 | Informe spam
Para mas seguridad siempre conviene hacer "type casting".

"Carmelo J. Morales Muñoz" wrote in message
news:eH8r9b%
Creo que mi problema radicaba en que talla era del tipo Int, y la división
por consiguiente era un entero(se perdian decimales).

un saludo1

Respuesta Responder a este mensaje
#3 Octavio Hernandez
09/01/2007 - 14:38 | Informe spam
Carmelo,

La expresión ((talla - 150) / k) se compila a una DIVISION ENTERA si sus dos
operandos son enteros.
Por ejemplo, declarando talla como double resolverías el problema (pesoSalud
por supuesto tmb debe serlo).

También puedes resolverlo dejando a 'talla' como int, por ejemplo:

(((double)talla - 150) / k);

o

((1.0 * talla - 150) / k);

Slds -Octavio


"Carmelo J. Morales Muñoz" escribió en el mensaje
news:usuRAW%
hola!

tengo una división que no da lo que tiene que dar, es decir, redondea y
pasa de los decimales.

Pongo el codigo :

// Realizo cálculos.

// --

// Peso salud

int k;

if (sexo == "H") {

k = 4; // valor para hombres

} else {

k = 2; // valor para mujeres

}

Single pesoSalud;

pesoSalud = talla - 100 - ((talla - 150) / k);



Con estos datos de prueba falla:


talla: 163

k = 2;

Debería de dar (calculadora en mano) 56.5 y da 57. Ha redondeado por su
cuenta y no quiero que haga eso. ¿como lo soluciono?.



bye!


Respuesta Responder a este mensaje
#4 Carmelo J. Morales Muñoz
10/01/2007 - 16:36 | Informe spam
gracias! no sabía ese *truco* de colocar el punto decimal para que deje
de interpretarlo como valor enter.

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