2016-09-18 1 views
0

Ich bin verwirrt, wie es passiert ist. Die Ausgabe ist nicht wie erwartet.Werte in langen Variable gespeichert ist nicht wie erwartet

public class Test2 { 

public static void main(String arg[]){ 
    int interval = 43200; 
    long tempInterval = interval * 60000; 
    System.out.println(tempInterval); 
}} 

Erwartete Ausgabe ist 2592000000, aber ich bekomme -1702967296. Es könnte naiv sein Frage, aber ich bin mit diesem fest.

+0

'60000' ist' int' und 'interval' ist' int'. Also ist 'interval * 60000'' int * int', was 'int' ist. Wenn Sie dieses 'int'-Ergebnis in' long'-Variable speichern, wird dessen Wert nicht geändert. Wahrscheinlich benötigen Sie ein '60000L' Literal, das für' long' steht, so dass Sie mit 'int * long = long' (jetzt wo ist das Duplikat) enden. – Pshemo

+0

Und http://stackoverflow.com/questions/17221254/1000-60-60-24-30-results-in-a-negative-number – Tunaki

Antwort

0

eine L hinzufügen nach 60000.

Java geht davon aus, dass Sie int Multiplikation verwenden, die einen int Überlauf verursacht, bevor es auf eine lange gegossen wird.

+0

Danke für die sofortige Antwort. es hat funktioniert und ich bekomme ein ordentliches Ergebnis. – subro

Verwandte Themen