You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现点击按钮累加TextView中的小数作为积分?

问题分析与修复方案

嘿,这个问题我太熟啦!你现在遇到的是典型的字符串与数值的类型混淆问题——你代码里把「已保存的积分(float类型)」和「TextView取出的字符串」直接用+拼接,Java会自动把float转成字符串做拼接操作,而不是数值加法,这就导致了0.3→0.33→0.333这种奇怪的结果。

修复步骤拆解

要解决这个问题,核心是先把TextView里的字符串转成浮点数值,再和已有的积分做数值加法,步骤如下:

  • 将TextView获取到的字符串转换为float类型
  • 取出当前已保存的积分值
  • 把两个浮点数值相加得到新积分
  • 将新积分保存回去

修正后的完整代码

// 1. 从TextView获取字符串并转成float
String getgPoints = points.getText().toString();
float addPoints = Float.parseFloat(getgPoints);

// 2. 获取当前已保存的积分
float currentPoints = getPoints(preview.this);

// 3. 计算新的积分(数值加法,不是字符串拼接)
float newPoints = currentPoints + addPoints;

// 4. 保存新积分
SharedPreferences data = getSharedPreferences("你的存储名称", MODE_PRIVATE);
data.edit().putFloat("count", newPoints).apply();

额外注意事项

为了避免TextView内容不是合法小数时崩溃,建议加上异常捕获:

String getgPoints = points.getText().toString();
float addPoints = 0f;
try {
    addPoints = Float.parseFloat(getgPoints);
} catch (NumberFormatException e) {
    // 处理非法数值的情况,比如提示用户输入有误
    e.printStackTrace();
}

float currentPoints = getPoints(preview.this);
float newPoints = currentPoints + addPoints;

SharedPreferences data = getSharedPreferences("你的存储名称", MODE_PRIVATE);
data.edit().putFloat("count", newPoints).apply();

内容的提问来源于stack exchange,提问作者binoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:41:10