Ich versuche ein paar grundlegende Berechnungen in meiner Android-App zu machen, um einen Date.getTime()
-Wert mit etwas berechnetem Zeug zu vergleichen.
Die Berechnung, die ich während einer Datenbankabfrage mache, ist:
%Vor% Ich berechne also im Grunde den Millisekunden-Wert von pauseDays
. Wenn pauseDays
größer wird (ich spreche ungefähr 90 Tage oder so), passiert etwas Seltsames. Das Ergebnis der Berechnung ist eine negative Zahl.
Das Seltsame ist, dass das Ergebnis 7776000000
sein sollte, also sollte es viel kleiner sein als Long.MAX_VALUE
. Könnte mir jemand erklären, warum ich hier eine negative Nummer bekomme?
Der Grund ist wahrscheinlich, weil pauseDays
ein int
Typ ist, oder? Dann multiplizierst du es mit einem weiteren Bündel von int
s, dann und konvertierst es in long
.
Betrachten Sie dies :
%Vor%Die Ausgabe davon ist:
%Vor% Beachten Sie, dass das erste long minus
Ganzzahlen verwendet, um seinen Wert zu generieren. Das zweite long minusL
verwendet alle langen Ganzzahlwerte.
Tags und Links java android long-integer