为什么我从Java除法中得到不好的结果

时间:2019-12-28 19:25:01

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

你好,为什么我在这里进行除法时结果不好。我在array [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) {

            }
        });

1 个答案:

答案 0 :(得分:0)

使用名称getChildrenCount()可以理解,此方法返回一个整数,如果这样,则可能是个问题,因为在您的情况下,Java中用整数除以总是会导致integer它被隐式转换为double,因此您得到3.0。

尝试将以下行替换为:

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