Problema division clase float, porfavor!!!

dividenda
05 de Enero del 2009
Hola,
necesito ayuda con un método de java, que no sé qué le pasa... Básicamente el problema es que no puedo hacer una división...

Os pego:

public void hallarLimites()
{
int i=0;
int aux=0;
double p=0;

for(i=0;i<lista.size();i++)
{
aux=lista.get(i).getApariciones();
p=(aux/entrada.length());
lista.get(i).setProbabilidad(p);
System.out.println("Proba :"+p);
}
}

El problema es que p (que es un double) vale o 1.0 o 0.0 no toma ningún otro valor... He intentado hacer un
System.out.println(p=(2/3)); y también sale 0.0

Un float (o double xq he probado con los dos) debería aceptar una división, no???

Por favor, ayudaaaaaaaaaa, llevo 1hora dándole vueltas y nada...

gracias!

Josejulio
05 de Enero del 2009
He llegado demasiado tarde... pero si alguna otra persona tiene este problema encontrará solución aquí.

El error de tu lógica es la siguiente,
p es un double, pero aux y entrada.length son enteros! la division de dos enteros es una "division entera", en donde se truncan los decimales, es por eso que 2/3 (ambos son enteros) te dan 0 en lugar de 0.66666667.

Para solucionar tu problema tendrias que hacer (por ejemplo)
p = ((double)aux)/entrada.length();
Cuando uno de los dos es un double (o float), entonces se realiza una división que retorna una variable que acepta decimales.

Saludos