【问题标题】:How to store double using SharedPreferences?如何使用 SharedPreferences 存储双倍?
【发布时间】:2014-10-13 07:56:52
【问题描述】:

我在手机内存中存储双精度时遇到问题。如果这是不可能的,我还有什么其他选择。基本上,代码使用 sharedpreferences 的目标是获取“酒精”支出的存储值,然后将 editText 中的任何输入添加到其中,然后存储该新值以备下次使用。 酒精消费总额

**有人可以帮忙解决这个问题,并详细说明 x y & z 在项目中的位置。

用户从微调器中进行选择,这是可行的。

public void addInput(){

    double dblCostInput = Double.valueOf(inputBox.getText().toString());
    String strCategories= spinnerCategories.getSelectedItem().toString();

    if(strCategories.equals("Alcohol"))
    {

        alcoholSpend = alcoholSpend + dblCostInput;
        inputBox.setText("");
        nextInput();
        inputBox.setText("Your Spending on"+strCategories+" is: " +d.format(alcoholSpend));

    }

【问题讨论】:

  • 如果你在双打中做任何与金钱相关的任务,你将会有一段糟糕的时光,因为双打并不是精确的值。考虑将货币值视为整数(即​​,存储 100 倍的值而不是双倍的值)。

标签: android variables memory double store


【解决方案1】:

尝试使用以下代码设置/放置和使用 sharedpreferences 获得双倍:

 ////////////////////////////////////Setter/////////////////////////

Editor putDouble(final Editor edit, final String key, final double value) {
  return edit.putLong(key, Double.doubleToRawLongBits(value));
}

//////////////////////////////Getter//////////////////////////////

double getDouble(final SharedPreferences prefs, final String key, final double defaultValue) {
return Double.longBitsToDouble(prefs.getLong(key,   Double.doubleToLongBits(defaultValue)));
}

【讨论】:

  • 我只是得到一个错误,说 void 方法不能返回值?另外我会在上面的部分中插入我的双倍吗?价值?
  • @user3924167 你还没有尝试我的答案。一切都已明确提及,没有空洞的东西
【解决方案2】:
getSharedPreferences("MY_PREFERENCE", MODE_PRIVATE).edit().putString("double", "0.28").commit();

然后要检索双精度,只需使用 Double.parseDouble:

Double.parseDouble(getSharedPreferences("MY_PREFERENCE", MODE_PRIVATE).getString("double", "0.28"));

【讨论】:

  • 我的双重姓名和价值应该放在哪里?
  • 那么 0.28 是多少? “double”是我的变量的名称?
  • 考虑使用 apply() 代替 commit() - commit 将其数据立即写入持久存储,而 apply 将在后台处理它
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2023-03-09
  • 2019-11-25
相关资源
最近更新 更多