基本上我将值作为字符串保存到共享首选项中。
我正在检索保存的值,并尝试在计算中使用它。
我怎样才能将其转换为双倍而不是字符串?
在计算后检索到值后,新值将以相同的值保存回共享首选项。
我希望你能理解,一直遇到麻烦!
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String newweight = sharedPreferences.getString("storednewweight", "");
newweight = newweight + 5;
//saves value into sharedpreference
savePreferences("storednewweight", (Double.toString(newweight)));
答案 0 :(得分:2)
你可以parse the string as a double:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String weight = sharedPreferences.getString("storednewweight", "");
Double newweight = Double.parseDouble(weight);
newweight = newweight + 5;
//saves value into sharedpreference
savePreferences("storednewweight", (Double.toString(newweight)));
答案 1 :(得分:0)
只要我把它写下来就可以保存:
Double to Long:
Double.doubleToRawLongBits(double);
长到两倍:
Double.longBitsToDouble(defaultLongValue);
修改强>
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Long newweightTemp = sharedPreferences.getLong("storednewweight", 0L);
Double newWeight = Double.longBitsToDouble(newweightTemp );
newweight = newweight + 5;
//saves value into sharedpreference
sharedPreferences.edit().putLong("storednewweight", Double.doubleToRawLongBits(newWeight)).apply();
这样的事情应该这样做。
答案 2 :(得分:0)
我如何转换它,以便它被视为一个双而不是一个 字符串?
A)如果您不需要双精度,请使用浮点数:getFloat和putFloat。
B)Parse the string as a double然后再次save the double as a string。