使用StringBuilder java中的Integer计算Float数

时间:2015-06-23 23:49:05

标签: java android stringbuilder

我有产品活动我想计算(浮动)价格*(整数)数量每个产品比我需要所有产品的总金额...我试过这个代码但结果它奇怪的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());

3 个答案:

答案 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);