在java中将两个整数除以double

我可以看到这是新程序员的常见问题,但是我没有成功实现我的代码的任何解决方案。 基本上我想划分w和v,必须保存为双变量。 但它打印[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; } 

这条线在这里d = w[L] /v[L]; 发生在几个步骤

 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 

换句话说,在你强制转换为double之前精度已经消失,你需要先强制转换为双倍,所以

 d = ((double)w[L]) / (int)v[L]; 

这迫使java在整个过程中使用双数学而不是使用整数数学,然后在最后强制转换为double

这里两个都是整数, w[L]/v[L]都是整数,在除法运算上它松散精度并且被修为integer数值,后面的trucated integer被转换为double

解决方案是将操作数或除数或两者转换为double,除法运算将产生十进制值。

 d = w[L]/(double)v[L]; 

使用如下

  d = (double) w[L] /v[L];