[Java] Primitive Datentypen - Überlauf erzeugen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Targa, 24. April 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 24. April 2012
    Primitive Datentypen - Überlauf erzeugen

    Hoi,
    wir haben eine Aufgabe gestellt bekommen: Wir sollen den Datentypen byte, short, int, long, float & double den jeweils höchsten Wert zuweisen, dann ausgeben und um 1 erhöhen und wieder ausgeben. Und dann noch erklären was wie warum.

    Ich hab das nun so gemacht:

    PHP:
    byte bytezahl  127
            
    short shortzahl  32767 ;
            
    int intzahl  2147483647 ;
            
    long longzahl  9223372036854775807L ;
            
    float floatzahl  Float . MAX_VALUE ;
            
    double doublezahl  Double . MAX_VALUE ;
            
            
    System . out . println ( bytezahl );
            
    System . out . println ( shortzahl );
            
    System . out . println ( intzahl );
            
    System . out . println ( longzahl );
            
    System . out . println ( floatzahl );
            
    System . out . println ( doublezahl );
            
            
    System . out . println ( "-----------------------------" );
            
            
    bytezahl ++;
            
    shortzahl ++;
            
    intzahl ++;
            
    longzahl ++;
            
    floatzahl ++;
            
    doublezahl ++;
            
            
    System . out . println ( bytezahl );
            
    System . out . println ( shortzahl );
            
    System . out . println ( intzahl );
            
    System . out . println ( longzahl );
            
    System . out . println ( floatzahl );
            
    System . out . println ( doublezahl );
    Meine Frage ist nun: Warum passiert bei double und float nichts? Oder ist was anderweitig falsch?
     
  2. 24. April 2012
    Zuletzt bearbeitet: 24. April 2012
    AW: Primitive Datentypen - Überlauf erzeugen

    Das ist in Java so vorgesehen.

    Chapter 4. Types, Values, and Variables

    Ich nehme mal an, das toString() bei Float.POSITIVE_INFINITY auch MAX_VALUE ausgibt. Oder hast du eine andere Ausgabe?

    Btw: Auch für Byte, Short, Int und Long gibt es die MAX_VALUE-Konstanten.
     
  3. 24. April 2012
    AW: Primitive Datentypen - Überlauf erzeugen

    Dann ist ja kein Wunder das ich mit google gescheitert bin
    Ich weiß das es da auch MAX.Value gibt allerdings ist das extra so damit wir "wissen" wie groß der Wertebereich ca ist

    Meine Ausgabe:

    Code:
    127
    32767
    2147483647
    9223372036854775807
    3.4028235E38
    1.7976931348623157E308
    -----------------------------
    -128
    -32768
    -2147483648
    -9223372036854775808
    3.4028235E38
    1.7976931348623157E308
    
    Vor dem gestrichelten Strich sind die Max Werte unter dem Strich die +1
     
  4. 24. April 2012
    AW: Primitive Datentypen - Überlauf erzeugen

    Ja, wie schon gesagt, die Float- und Double-Variable müssten den Wert POSITIVE_INFINITY haben, der aber durch das println einfach als höchster möglicher Wert angezeigt wird.

    Du kannst ja stattdessen einfach folgenden Test einbauen:
    Code:
    if (floatzahl == Float.POSITIVE_INFINITY || floatzahl == Float.NEGATIVE_INFINITY) {
     // wie erwartet nach Java-Spezifikation
    } else {
     // sollte eigentlich nie vorkommen
    }
    
     
  5. 24. April 2012
    AW: Primitive Datentypen - Überlauf erzeugen

    Alles klar, danke für die schnelle Hilfe!
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.