Как изменить формулу подсчёта?

Вообщем есть приложение такси и формула подсчёта суммы поездки в которой сумма за 1 километр делиться на 1000 и умножается на общий километраж!

Сама формула находиться в BottomSheetFragmentBookingDriver.java

        recycler_view_driver.addOnItemTouchListener(new RecyclerTouchListener(context, recycler_view_driver, new ClickListener() {
            @Override
            public void onClick(View view, int position) {
                DriverPojo driverPojo = albumList_driver.get(position);
                layout_driver_detail.setVisibility(View.VISIBLE);
                line_divider_detail.setVisibility(View.VISIBLE);
                model_vehicule.setText(driverPojo.getModel());
                numberplate_vehicule.setText(driverPojo.getNumberplate());
                driver_name.setText(driverPojo.getName());
                driver_rating.setText(driverPojo.getRate()+"/5");
                vehicule_name.setText(driverPojo.getTypeVehicule());
                cout_requete.setText(cout+" "+M.getCurrency(context));
                passenger.setText(driverPojo.getPassenger());
                driver_phone = driverPojo.getPhone();
                driver_id = String.valueOf(driverPojo.getId());
//                Toast.makeText(activity, ""+driverPojo.getPhoto(), Toast.LENGTH_SHORT).show();

                // loading model cover using Glide library
                Glide.with(context).load(AppConst.Server_url+"images/app_user/"+ driverPojo.getPhoto())
//                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .skipMemoryCache(false)
//                    .centerCrop()
//                .asBitmap()
//                .error(R.drawable.ic_thumb_placeholder)
                        .listener(new RequestListener<Drawable>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                                progressBar.setVisibility(View.GONE);
//                                driver_image.setImageDrawable(getResources().getDrawable(R.drawable.user_profile));
                                return false;
                            }

                            @Override
                            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                                progressBar.setVisibility(View.GONE);
                                return false;
                            }
                        })
                        .into(driver_image);
            }

            @Override
            public void onLongClick(View view, int position) {
                DriverPojo driverPojo = albumList_driver.get(position);
            }
        }));

       tabDistance = distance.split(" ");

        if(tabDistance[1].equals("m"))
            distance_init = tabDistance[0];
        else
            distance_init = String.valueOf(Float.parseFloat(tabDistance[0])*1000);

        cout = String.valueOf(Math.round((Float.parseFloat(price)/1000) * Float.parseFloat(distance_init)));
        if(statut_commission.equals("yes") && statut_commission_perc.equals("yes")){
            Float cout_fixed = Float.parseFloat(commission);
            Float cout_perc = Float.parseFloat(cout) + (Float.parseFloat(cout) * Float.parseFloat(commission_perc));
            cout = String.valueOf(cout_fixed + cout_perc);
        }else if(statut_commission.equals("yes")){
            cout = String.valueOf(Float.parseFloat(cout) + Float.parseFloat(commission));
        }else{
            cout = String.valueOf(Float.parseFloat(cout) + (Float.parseFloat(cout) * Float.parseFloat(commission_perc)));
        }

        double i = Float.parseFloat(cout);
        double i2 = i/60000;
        float cost = (float) Math.round(i2 * 100) / 100;
        cost = cost * Float.parseFloat(distance_init);

        cout_ride.setText(cost+" "+ M.getCurrency(context));
//        distance_ride.setText(distance);
        ride_duration.setText(duration);

Сама формула

 cout = String.valueOf(Math.round((Float.parseFloat(price)/1000) * Float.parseFloat(distance_init)));
        if(statut_commission.equals("yes") && statut_commission_perc.equals("yes")){
            Float cout_fixed = Float.parseFloat(commission);
            Float cout_perc = Float.parseFloat(cout) + (Float.parseFloat(cout) * Float.parseFloat(commission_perc));
            cout = String.valueOf(cout_fixed + cout_perc);
        }else if(statut_commission.equals("yes")){
            cout = String.valueOf(Float.parseFloat(cout) + Float.parseFloat(commission));
        }else{
            cout = String.valueOf(Float.parseFloat(cout) + (Float.parseFloat(cout) * Float.parseFloat(commission_perc)));
        }

        double i = Float.parseFloat(cout);
        double i2 = i/60000;
        float cost = (float) Math.round(i2 * 100) / 100;
        cost = cost * Float.parseFloat(distance_init);

Кроме этого из бд выводиться ещё одно значение pric

Его нужно добавить к итоговому результату cout

При попытке изменить строку

cout = String.valueOf(Math.round((Float.parseFloat(price)/1000) * Float.parseFloat(distance_init)));

на

cout = String.valueOf(Math.round((Float.parseFloat(price)/1000) * Float.parseFloat(distance_init)) + Integer.parseInt(pric));

получаю цену 5949.81 а правильная цена 5891.81


Ответы (0 шт):