Я пытаюсь добавить несколько больших чисел, чтобы сделать взвешенную долю. Если во фракцию (a, b, c) входят три числа, взвешенная фракция должна быть: (1/a)/((1/a) + (1/b) + (1/c))BigDecimal добавление в java
На данный момент я только пытаюсь исправить знаменательную часть фракции. Сортированный массив: {{15 9 13}, {15 18 16}, {9 18 12}, {13 12 16}, {17 24 25}}
Я пытаюсь использовать большое десятичное число после двойного и float, похоже, не захватывают очень маленькую фракцию, которая возникает в результате взвешивания. Однако даже с большим десятичным значением, распечатка еще 0. Что я делаю неправильно?
public static BigDecimal[][] weights(int[][]sorted, int k){
BigDecimal [][] weighted = new BigDecimal[sorted.length][k]; //k=3
BigDecimal denom = BigDecimal.ZERO;
for (int i = 0; i<sorted.length; i++){ //sums to create denominator value
for(int j = 0; j<sorted[i].length; j++){
denom = denom.add(new BigDecimal(1/sorted[i][j]));
System.out.println("denom " + denom);
}
}
return weighted;
}
Любая помощь была бы принята с благодарностью!
PERFECT! Теперь он работает :) – user3369920
Если вы хотите получить точный номер, продолжайте использовать 'BigDecimal'. –
@JonathanDrapeau Как правило, 'BigDecimal' более точны, но то, что здесь передается, -« double ». – rgettman