【问题标题】:count Float number with Integer in StringBuilder java在StringBuilder java中用整数计算浮点数
【发布时间】:2015-09-09 23:51:23
【问题描述】:

我有产品活动,我想计算每个产品的(浮动)价格*(整数)数量,而不是我需要所有产品的总数量...我尝试了这段代码,但结果很奇怪 orderItems 是 listview 为 selected产品,

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());

【问题讨论】:

  • 什么是orderItems,getNItems和getItemPrice返回什么类型?
  • 为什么要将每个计算的结果附加到字符串而不是将其添加到浮点数?您是否希望看到每次计算的结果而不是总数?您可能还希望在每个计算之间放置一个分隔符(例如空格),否则它们将一起运行。

标签: java android stringbuilder


【解决方案1】:

您不需要将所有内容放在一行中。我建议将声明分成多个部分。我怀疑你想使用某种形式的格式化输出,通常(为了钱)你会使用NumberFormat.getCurrencyInstance(),然后用类似的东西格式化你的total

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());

【讨论】:

  • 谢谢先生,您的代码是正确的,但我需要发票的总金额我在另一个活动中做的,它是正确的,但我不知道为什么它不正确(它给出了结果但是这是错误的,但在这里这段代码是正确的:
  • 浮动总价格 = 0; for (int i = 0; i
  • @HussainAali 请编辑您的问题并在此处包含所有相关详细信息。此外,为了尽快获得更多更好的帮助,请在您的问题开始时提供详细信息。 如何的结果是错误的?你得到什么输出?你期望什么输出?
  • 谢谢先生,如果我的问题不清楚,我很抱歉^^,我找到了答案,也许我的错误是当我在字符串生成器中合并浮点数时
【解决方案2】:

您是否要显示购买所有商品的总成本?例如,如果有人选择了加起来为 50 美元的各种物品,则输出 50 美元? Elliot 的答案是正确的,但由于舍入和准确性问题,我不建议使用 float 或 double 来处理金钱。请改用 BigDecimal。

【讨论】:

    【解决方案3】:

    这就是我想要的,我在阅读您的答案时找到了它,我只想要总金额...... 在我之前但是例如 (2(item(a))*2$ +4(item(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);
    

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2013-06-12
      • 2011-01-10
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多