División de dos enteros a un doble en java
int double (3)
Puedo ver que este es un problema común para los nuevos programadores, sin embargo, no logré implementar ninguna de las soluciones a mi código. Básicamente, quiero dividir w y v, que deben guardarse en una variable doble. Pero imprime [0.0, 0.0, ..., 0.0]
public static double density(int[] w, int[] v){
double d = 0;
for(L = 0; L < w.length; L++){
d = w[L] /v[L];
}
return d;
}
Actaully w[L]/v[L]
aquí ambos son enteros, en la operación de división pierde precisión y truca a valor integer
, este último integer
trucado se convierte a double
.
La solución sería convertir operando o divisor o ambos a doble, el funcionamiento de división produciría un valor decimal.
d = w[L]/(double)v[L];
Esta línea aquí d = w[L] /v[L];
se lleva a cabo en varios pasos
d = (int)w[L] / (int)v[L]
d=(int)(w[L]/v[L]) //the integer result is calculated
d=(double)(int)(w[L]/v[L]) //the integer result is cast to double
En otras palabras, la precisión ya se ha ido antes de lanzar al doble, debes lanzar al doble primero, entonces
d = ((double)w[L]) / (int)v[L];
Esto obliga a Java a utilizar el doble de las matemáticas en todo el camino en lugar de utilizar las matemáticas de números enteros y luego lanzar al doble al final
usar como siguiendo
d = (double) w[L] /v[L];