我有产品活动我想计算(浮动)价格*(整数)数量每个产品比我需要所有产品的总金额...我试过这个代码但结果它奇怪的orderItems是listview为选定产品,
NItems是数量,itemprice是每个项目的价格
total_amount = new StringBuilder();
for (int i = 0; i < orderItems.size(); i++) {
total_amount.append(Integer.parseInt(orderItems.get(i)
.getNItems()) * Float
.parseFloat(orderItems.get(i)
.getItemPrice()));
}
if (total_amount.length()== 0)
return false;
else
total_amount.deleteCharAt(total_amount.length()-1);
Log.d("OrderPreview",total_amount.toString());
答案 0 :(得分:1)
您不需要将所有内容放在一行上。我建议将声明分成多个部分。我怀疑你想要使用某种形式的格式化输出,并且通常(为了金钱)你会使用NumberFormat.getCurrencyInstance()
,然后用
NumberFormat nf = NumberFormat.getCurrencyInstance();
total_amount = new StringBuilder();
for (int i = 0; i < orderItems.size(); i++) {
int count = Integer.parseInt(orderItems.get(i).getNItems());
float price = Float.parseFloat(orderItems.get(i).getItemPrice());
total_amount.append(nf.format(count * price)).append(" ");
}
Log.d("OrderPreview", total_amount.toString());
如果你想要一个总计,那应该是
float grandTotal = 0;
for (int i = 0; i < orderItems.size(); i++) {
int count = Integer.parseInt(orderItems.get(i).getNItems());
float price = Float.parseFloat(orderItems.get(i).getItemPrice());
grandTotal += (count * price);
}
NumberFormat nf = NumberFormat.getCurrencyInstance();
total_amount = new StringBuilder();
total_amount.append(nf.format(grandTotal));
Log.d("OrderPreview", total_amount.toString());
答案 1 :(得分:0)
您是否尝试显示购买所有商品的总费用?例如,如果有人选择总共加起来50美元的各种商品,那么输出50美元?艾略特的答案是正确的,但由于四舍五入和准确性问题,我不建议使用浮动或双倍来处理金钱。改为使用BigDecimal。
答案 2 :(得分:0)
这就是我想要的,当我读到你的答案时,我发现它,我只想要总量...... 在我之前,例如(2(项目(a))* 2 $ +4(项目(b))* 1.2 $)结果是com 4.04 $ 但现在是正确的感谢每个人
total = new StringBuilder();
float total_amount = 0;
for (int i = 0; i < orderItems.size(); i++) {
total_amount=total_amount+(Integer.parseInt(orderItems.get(i)
.getNItems()) * Float
.parseFloat(orderItems.get(i)
.getItemPrice()));
}
total.append(total_amount);