Я нахожусь в этой странной ситуации, когда я получаю все тестовые случаи, за исключением этого (те же 3 числа).Я хочу пропорционально распределить наличные деньги через значения в объявленном массиве.Я хочу, чтобы пропорция была в Int или без десятичных дробей.Пожалуйста, помогите мне в этом тестовом примере: (
public class DistProp{
public static void main(String[] args){
double[] a={300,300,300};
double newA[]= new double[a.length];
double aTotal=0;
for(int i=0;i<a.length;i++){
aTotal+=a[i];
}
double cash=100;
System.out.println("cash:"+cash);
// this is just to show diff between running total and normal proporational distribution.
System.out.println("before");
double beforeTotal=0,afterTotal=0;
for(int i=0;i<a.length;i++){
double tmp =(a[i]/aTotal)*cash;
System.out.println("a["+a[i]+"]="+tmp);
beforeTotal+=tmp;
}
System.out.println("before Total:"+beforeTotal);
System.out.println("after");
double runningTotal = 0.0,oldRunningTotal=0.0;
for(int i=0;i<a.length;i++){
oldRunningTotal=runningTotal;
runningTotal+=(a[i]/aTotal)*cash;
newA[i]= (int)runningTotal - (int)oldRunningTotal;
}
for(int i=0;i<newA.length;i++){
double tmp =newA[i];
System.out.println("a["+a[i]+"]="+tmp);
afterTotal+=tmp;
}
System.out.println("after Total:"+afterTotal);
}
}
Вывод, который я получаю:
cash:100.0
before
a[300.0]=33.33333333333333
a[300.0]=33.33333333333333
a[300.0]=33.33333333333333
before Total:99.99999999999999
after
a[300.0]=33.0
a[300.0]=33.0
a[300.0]=33.0
after Total:99.0
, а не 100.