Je le code suivant:conversion incorrecte de la double et à long
Double.valueOf(defaultValue.toString()).longValue()
J'utilise cette ligne pour analyser le defaultValue
d'un TimePicker j'ai créé pour Android. Je définis la valeur par défaut pour cela (dans mon PreferenceScreen
xml) pour être 1483318800000
. Pour une raison quelconque, il commence en notation scientifique: 1.48331876E12
, puis après avoir parcouru le code ci-dessus: 1483318760000
. Ça finit par être éteint. J'ai besoin qu'il soit correct puisque c'est un horodatage en millisecondes. Je tourne pour 20 heures - mais je peux seulement l'obtenir à 19h59 (puisque après la conversion, il est éteint). Si je fais Long.parseLong(defaultValue.toString())
alors je vais obtenir un NumberFormatException
puisqu'il est en notation scientifique. Comment puis-je garantir une conversion "bonne"?
Modifier: Le code de conversion est la première ligne de code que je montre ci-dessus. Je le réglage de la valeur par défaut comme ceci:
<TimePreference
android:defaultValue="1483318830000"
android:key="settings_night_mode_start_time"
android:title="@string/settings_night_mode_start" />
Ensuite, il est transmis dans this function.
Fixer l'endroit qui convertit 1483318800000 à 1.48331876E12, parce que cette partie le fait mal. La valeur correcte doit être 1.4833188E12. – Tom
Afficher le code de la conversation à 1.48331876E12 –
Quel type a 'defaultValue' obtenu? –