entweder failt int oder ich...

Stratocaster

Mitglied
Hallo an alle hier erstma :)
also, hier ist der Code:
Java:
public class asd
{
    public int bla()
    {
        return 66500*66500+4*205;
    }
}
Das wars auch schon.
Das Problem ist, dass ich bei Aufruf der Methode bla() die Zahl 127283524 bekomme, und das ist falsch.
Die richtige Antwort ist 4422250820.
Ist das jetzt, weil "int" nicht mit so großen Werten rechnen kann, oder hab ich einen Fehler?
Danke!
 
G

Gonzo17

Gast
Code:
Integer.MAX_VALUE
ist
Code:
2147483647
(2^31 - 1), von daher ist die Zahl zu groß, ja. Versuch es mit Long, das ist deutlich größer (2^63 - 1), der Code würde dann zum Beispiel so aussehen (keine Garantie, dass das "schön" oder "optimal" ist):

Java:
	public static long bla() {
		return 66500L * 66500L + 4L * 205L;
	}
 
G

Gast2

Gast
Die Aussage dass der Wertebereich 2^31 ist, ist nunmal falsch ;) Darauf war wohl das nein bezogen. Wie schon erwähnt ist der Wertebereich 2^32 (4 byte).
Code:
2^31 - 1
ist der maximale Wert eines ints. Das wurde sicherlich verwechselt.
 
I

irgendjemand2

Gast
ums mal aus der insel zu zitieren

datentypgröße : 32bit
numerischer wertebereich : -(2^31) bis +(2^31)-1 da alle primitiven datentypen in java grundsätzlich signed sind
 

Neue Themen


Oben