我可以看到这是新程序员的常见问题,但是我没有成功实现我的代码的任何解决方案。基本上我想划分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;
}
答案 0 :(得分:31)
这一行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
答案 1 :(得分:3)
Actaully w[L]/v[L]
这里都是整数,在除法运算中它松散精度并且被赋予integer
值,后者被称为integer
被转换为double
。
解决方案是将操作数或除数或两者转换为double,除法运算将产生十进制值。
d = w[L]/(double)v[L];
答案 2 :(得分:2)
使用如下
d = (double) w[L] /v[L];