El valor doble devuelve 0 [duplicado]
Pregunta
Esta pregunta ya tiene respuesta aquí:
- División interna:¿Por qué el resultado de 1/3 == 0? 15 respuestas
He aquí un ejemplo:
Double d = (1/3);
System.out.println(d);
Esto devuelve 0, no 0,33333...como debería.
¿Alguien sabe?
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.)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow