【问题标题】:Why i am getting bad result from division in java [duplicate]为什么我从java中的除法中得到不好的结果[重复]
【发布时间】:2020-04-18 05:11:20
【问题描述】:

你好,为什么当我在这里做除法时我得到了不好的结果。我在数组 [0] 中有 4 个数字 3 4 5 1 结果,如果 13 并且从 4 结果除以需要 3.25 但在我做错的地方得到 3.0?

final long[] total = {0};
        eventReference.child(eventId).child("EventRating").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        int rating = snapshot.child("rated").getValue(Integer.class);
                        total[0] = total[0] + rating;
                    }
                }
                double average = total[0] /dataSnapshot.getChildrenCount();
                Toast.makeText(getContext(), average + "           " + total[0], Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

【问题讨论】:

    标签: java android arrays firebase firebase-realtime-database


    【解决方案1】:

    名称getChildrenCount() 我知道这个方法返回一个整数,如果是这样,这可能是问题所在,因为在Java 中除以整数总是导致integer,在你的情况下它被隐式转换到double,这样你就得到了3.0。

    尝试将此行替换为:

    double average = total[0] / (double) dataSnapshot.getChildrenCount();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多