在 java 中将两个整数除以一个双精度值

2022-09-02 02:54:33

我可以看到这是新程序员的常见问题,但是我没有成功地实现任何代码解决方案。基本上,我想除以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;
}

答案 1

这里的这条线发生在几个步骤上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

换句话说,在你投射到倍数之前,精度已经消失了,你需要先投掷到加倍,所以

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

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


答案 2

使用方式如下

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

推荐