【发布时间】:2017-11-29 08:43:28
【问题描述】:
我有以下代码:
Double.valueOf(defaultValue.toString()).longValue()
我正在使用这一行来解析我为 Android 创建的 TimePicker 的 defaultValue。我将它的默认值(在我的PreferenceScreen xml 中)设置为1483318800000。出于某种原因,它以科学记数法开始:1.48331876E12,然后在运行完上面的代码后:1483318760000。它最终被关闭。我需要它是正确的,因为这是一个以毫秒为单位的时间戳。我要在晚上 8 点拍摄——但我只能在晚上 7 点 59 分拍摄(因为转换之后,它就关闭了)。
如果我输入Long.parseLong(defaultValue.toString()),我会得到NumberFormatException,因为它是科学计数法。
我如何保证“良好” 转化?
编辑:转换代码是我上面显示的第一行代码。我正在设置默认值,如下所示:
<TimePreference
android:defaultValue="1483318830000"
android:key="settings_night_mode_start_time"
android:title="@string/settings_night_mode_start" />
然后它被传递到this function。
【问题讨论】:
-
修复将 1483318800000 转换为 1.48331876E12 的地方,因为那部分做得不好。正确的值应该是 1.4833188E12。
-
将会话代码显示为 1.48331876E12
-
defaultValue得到了哪种类型? -
我已更新 OP 以显示所有内容。
标签: java android long-integer type-conversion epoch