Разделение двух целых чисел на 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];