He aquí un ejemplo:valor Double devuelve 0
Double d = (1/3);
System.out.println(d);
Esto devuelve 0, no 0.33333 ... como debe ser.
¿Alguien sabe?
He aquí un ejemplo:valor Double devuelve 0
Double d = (1/3);
System.out.println(d);
Esto devuelve 0, no 0.33333 ... como debe ser.
¿Alguien sabe?
Eso es porque 1
y 3
son tratados como integers
cuando no se especifica lo contrario, por lo 1/3
evalúa a la integer
0
que luego se arrojó sobre la double
0
. Para solucionarlo, pruebe (1.0/3)
, o quizás 1D/3
para indicar explícitamente que está tratando con valores dobles.
Si tiene int
s que desea dividir usando la división de punto flotante, que tendrá que emitir el int
a un double
:
double d = (double)intValue1/(double)intValue2
(En realidad, sólo se fundición intValue2
debería ser suficiente para tener la intValue1
ser moldeado a double
automáticamente, creo.)
uso doble y no doble a menos que necesite utilizar estos Valu es en el sentido del objeto. Tenga en cuenta los conceptos Autoboxing
El OP preguntaba sobre los métodos de truncamiento de Java y por qué una división de enteros se trunca, incluso si se almacena en un doble; no sobre autoboxing. – MathSquared
El posible duplicado de [División en Java siempre da como resultado cero (0)?] (Http://stackoverflow.com/questions/10455677/division-in-java-always-results-in- cero-0) –
@ ΦXocę 웃 Пepeúpa ツ No es un duplicado. Esa pregunta es un duplicado de esta pregunta. Mire las fechas antes de marcar – Zoe