如何在 firebase 数据库中将零保存为 Double

Jes*_*per 5 android firebase firebase-realtime-database

在我的数据库中,我跟踪用户行驶的距离,并为每个人设置初始值 0。在我的代码中,我通过获取旧值并向其添加新距离来更新此值,然后保存该值。

首先,当我从数据库中检索 0 时,它以 Long 形式返回,这很好:

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    Long previousDistance = (Long) dataSnapshot.child("distance").getValue();
    userReference.child("distance").setValue(previousDistance.doubleValue()+distanceTravelled);
 }
Run Code Online (Sandbox Code Playgroud)

问题是,现在,存储在数据库中的值是 Double,因此下次运行上述代码时,它将失败并显示ClassCastExcepiton.

我可能可以用 if 语句解决这个问题,但最简单的解决方案是将最初的 0 存储为 Double 。但是,我无法做到这一点。我已经尝试过这两个:

myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(Double.valueOf(0.0));
myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(0.0);
Run Code Online (Sandbox Code Playgroud)

它们仍然存储为“0”并以 Long 形式返回。是否可以将零作为 Double 存储在数据库中?

Flo*_*lin 0

double previousDistance = (double) dataSnapshot.child("distance").getValue();
Run Code Online (Sandbox Code Playgroud)

你应该像往常一样说:

myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(0);
Run Code Online (Sandbox Code Playgroud)

  • 您是否尝试过“double previousDistance = dataSnapshot.child("distance").getValue(Double.class);`? (2认同)