Designing a shopping cart in listView but I want to calculate the discounted price of a product value.
So from a list view, I extracted the value into string coz values are stored in a string. I am unable to process the formula as it shows the error.
Operator '*' cannot be applied to 'java.lang.String', 'java.lang.String'
img.setImageResource(ModelList.get(i).getImg());
name.setText(ModelList.get(i).itm_name);
price.setText("Rs" ModelList.get(i).itm_price "/ kg");
String actualPrice = ModelList.get(i).itm_price;
disc.setText(ModelList.get(i).itm_discount "%");
String discPrice = ModelList.get(i).itm_discount;
Float discountedPrice = actualPrice - (actualPrice * discPrice /100);
Defined Constructor:
String itm_name;
String itm_price;
String itm_discount ;
int img ;
public ListModel(String itm_name, String itm_discount,String itm_price, int img) {
this.itm_name = itm_name;
this.itm_discount = itm_discount;
this.itm_price = itm_price;
this.img = img;
Thanks for the help.
CodePudding user response:
For financial calculation, you'd better use java.math.BigDecimal.
String actualPrice = "100.00";
String discPrice = "10";//10% discount
BigDecimal actualPriceBigDecimal = new BigDecimal(actualPrice);
BigDecimal result = actualPriceBigDecimal.subtract(
actualPriceBigDecimal.multiply(new BigDecimal(discPrice)).divide(BigDecimal.valueOf(100)));
TextView txtv_test = findViewById(R.id.txtv_test);
txtv_test.setText( result.toPlainString());
If you use float, you may get 89.999999.
CodePudding user response:
Being it declared as string, I can get the variable typecast into float by using parse.
Here is my code:
Float actualPrice = Float.parseFloat(ModelList.get(i).itm_price);
Float discPrice = Float.parseFloat(ModelList.get(i).itm_discount);
