Разделение двух целых чисел на double в java

Я вижу, что это распространенная проблема для новых программистов, однако мне не удалось реализовать какое-либо решение для моего кода. В принципе, я хочу разделить 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

Actaully w[L]/v[L] здесь оба являются целыми, при операции деления его теряют точность и просканированы до значения integer, последний trucated integer преобразуется в double.

Решение должно было бы преобразовать операнд или делитель, или оба в double, операция разделения приведет к десятичному значению.

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

Ответ 3

используйте, как показано ниже

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