Java 如何保存SharedReferences中累加的十进制数?

Java 如何保存SharedReferences中累加的十进制数?,java,android,Java,Android,当我处理整数(1,2,3,4…)时,我能够使用以下java代码保存分数: pointsAmount = pointsAmount +10; pointsAvailable.setText("C."+pointsAmount); SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE); saveCoins.edit().putInt("C.",

当我处理整数(1,2,3,4…)时,我能够使用以下java代码保存分数:

pointsAmount = pointsAmount +10;
    pointsAvailable.setText("C."+pointsAmount);
    SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
    saveCoins.edit().putInt("C.",pointsAmount).commit();
我可以添加10个积分,它们相加并保存在已保存的首选项中,即使我再次关闭并打开应用程序,我的积分始终与此代码保持一致

现在我希望
点samount
是一个十进制数
+0.05
。使用与上面相同的代码是不允许的,这给了我错误。因此,我使用以下代码保存十进制数字的硬币。现在的错误是,当我再次关闭并重新打开应用程序时,我的硬币消失了:

pointsAmount = (pointsAmount +0.05);
    pointsAmount .setText("C."+pointsAmount );
    SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
    saveCoins.edit().putInt("C.",(int)pointsAmount).apply();
    SharedPreferences.Editor editor= saveCoins.edit();
    editor.putString("mySaverCoins", "mySaverCoins");
    editor.commit();

我希望在关闭应用程序后唤醒应用程序时,可以保存我的硬币。我的代码有什么问题?

当您保存硬币时,您正在将应该是浮点的数字转换为整数。当您这样做时,Java只是截断数字,这意味着小数点之后的任何内容都将丢失。每次重新启动应用程序时,您都会看到硬币被“擦除”的原因是,在您赢取1枚硬币之前,您的
pointsAmount
变量在保存到
SharedReferences
时会被截断为0。解决此问题的最简单方法是直接存储和恢复浮点数:

pointsAmount = pointsAmount + 0.05;
pointsAmount.setText("C." + pointsAmount );
SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
saveCoins.edit().putFloat("C.", pointsAmount).apply();
要恢复:

SharedPreferences saveCoins = this.getSharedPreferences("mySaverCoins", Context.MODE_PRIVATE);
pointsAmount = saveCoins.getFloat("C.", 0);

什么是点计数?你会犯什么错误?当你刚刚说你想让它成为一个十进制数时,为什么要使用
putin
?感谢big broe,这几天来一直在试图解决这个错误,我希望我在学校做过编程,对你来说它看起来很简单。嗯,我只是一个初学者,我是从零开始自学的。你是最好的受祝福的人