Android / Java: lang wird negativ, ohne max_value zu überschreiten

8

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?

    
user1515310 27.09.2012, 22:25
quelle

1 Antwort

21

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.

    
Eric 27.09.2012, 22:29
quelle

Tags und Links