Pregunta

Esta pregunta ya tiene respuesta aquí:

He aquí un ejemplo:

Double d = (1/3);
System.out.println(d);

Esto devuelve 0, no 0,33333...como debería.

¿Alguien sabe?

¿Fue útil?

Solución

Eso es porque 1 y 3 son tratados como integers cuando no especifiques lo contrario, entonces 1/3 evalúa a la integer 0 que luego se lanza al double 0.Para solucionarlo, intente (1.0/3), o tal vez 1D/3 para indicar explícitamente que se trata de valores dobles.

Otros consejos

Si usted tiene int s que desea dividir usando la división de punto flotante, que tendrá que emitir el double a un intValue2:

double d = (double)intValue1 / (double)intValue2

(En realidad, sólo se fundición intValue1 debería ser suficiente para tener la <=> ser moldeado a <=> automáticamente, creo.)

Uso doble y no doble a menos que necesite usar estos valores en el sentido de objeto. Ser consciente de las href="http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html" rel="nofollow noreferrer"> autoboxing conceptos

scroll top