java int double divide

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];