我的 Firebase 实时数据库中有十进制数,但是当我检索到长值时。这是一个错误java.lang.ClassCastException: java.lang.Double 不能转换为 java.lang.Long然后,我尝试将代码更改为 double。但它会出现错误,例如:java.lang.ClassCastException: java.lang.Long 不能转换为 java.lang.Double但是,当我将 Firebase 中的值更改为整数 ex: 70 时,它表现良好并显示 70.0 与 long 值。这是我的数据库Java类 nilaiRef.child(keys).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { listNilai.clear(); if(dataSnapshot.exists()){ for(DataSnapshot dataHasil : dataSnapshot.getChildren()){ final long nilai_temp = (long) dataHasil.child(users.getUid()).getValue(); ======ERROR HERE===== nilaiInfoRef.child(keys).child(dataHasil.getKey()).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot.exists()){ NilaiMatakuliah nilai = dataSnapshot.getValue(NilaiMatakuliah.class); nilai.setNilai(nilai_temp); listNilai.add(nilai); mAdapter.notifyDataSetChanged(); Log.e("nilais","1 "+nilai.getNilai()); Log.e("nilais","2 "+nilai.getNama()); Log.e("nilais","3 "+nilai.getSkala()); Log.e("nilais","4 "+nilai.getBobot()); }
2 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
看着你的数据库,你有两种类型的数据Long
和double
,我会推荐的第一件事是,当你将数据推送到数据库,你应该将所有的值增加一倍,即把他们与.0
他们是否long
。
如果这是不可能的,您可以随时进行转换,假设您的值将在 double 范围内,您可以这样做:
final double nilai_temp = (double) dataHasil.child(users.getUid()).getValue();
注意:double
对于 small d
,您不能使用Double
(with capital D
)以这种方式进行转换。
FFIVE
TA贡献1797条经验 获得超6个赞
也许你可以使用 java.lang.Long 的内置方法?
public double doubleValue()
然后实例化一个新的 java.lang.Double 如果你想保留它作为一个对象?
Double myDouble = new Double (nilaiRef.doubleValue()) ;
在doubleValue() 中为您完成了转换。
添加回答
举报
0/150
提交
取消