1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Hallo Gast,

    um unseren Lesern und Nutzern das best mögliche Seitenerlebnis bieten zu können nutzen wir Google Analytics.
    Um mehr über unsere Nutzung von Google Analytics zu erfahren, kannst du in unserer Datenschutzerklärung unter dem Punkt "Datenschutzerklärung für die Nutzung von Google Analytics" mehr erfahren und, wenn gewünscht, die Nutzung von Google Analytics via Klick auf den Link "Google Analytics deaktivieren" unterbinden.

    Solltest du diese Benachrichtigung ausblenden, akzeptierst du unsere Nutzung von Google Analytics. (Das Deaktivieren steht dir allerdings immer zur Verfügung)
    Information ausblenden

Gelöst Nummern größer als "Integer.MAX_VALUE"

Dieses Thema im Forum "Java" wurde erstellt von GasGas, 7. November 2017.

Schlagworte:
  1. GasGas

    GasGas Neuling Nutzer

    Registriert seit:
    2. November 2017
    Beiträge:
    4
    Zustimmungen:
    5
    Geschlecht:
    männlich
    Hey!

    Ich habe ein Problem mit den Limits des Integers.

    Meine Problemstellung:

    Code:
    public enum Factories {
    
        Trailer(1,"Trailer", 2000, 500, 5, 0.4),
        House(2, "House", 100000, 5000, 10 , 4.4),
        Facility(3, "Facility",1000000, 50000, 30, 13.8),
        Island(4, "Island", 30000000, 50000, 40, 83.2),
        Hideout(5, "Hideout", 100000000, 90000, 45, 152),
        China(6, "China", 2000000000, 500000, 200, 782),
        Moon(7, "Moon", 50000000000, 50000000, 50, 24560);
    
    
        int ID;
        String Name;
        int Cost;
        int maxworkers;
        int workercost;
        double benefit;
    
        Factories(int ID,String Name, int cost, int workercost,int maxworkers , double benefit){
            this.ID = ID;
            this.Name = Name;
            this.Cost = Cost;
            this.maxworkers = maxworkers;
            this.benefit = benefit;
            this.workercost = workercost;
        }
    Code:
       public String getName() {
            return Name;
        }
    
        public int getCost() {
            return Cost;
        }
    
        public int getID() {
            return ID;
        }
    
        public int getMaxworkers() {
            return maxworkers;
        }
    
        public double getBenefit() {
            return benefit;
        }
    
        public int getWorkercost() {
            return workercost;
        }
    
        public static Factories getFactory(int ID){
            for(Factories s: Factories.values()){
                if(s.getID() == ID){
                    return s;
                }
            }
            return null;
        }
    }

    Mein Problem ist das Ich mit "50000000000" die Limits von einen Integer erreiche.
    Code:
    Moon(7, "Moon", 50000000000, 50000000, 50, 24560);
    Die Frage:
    Wie kann ich dieses Limit umgehen?

    lg GasGas
     
    MBK gefällt das.
  2. Taminoful

    Taminoful Administrator Administrator

    Registriert seit:
    28. Oktober 2017
    Beiträge:
    5
    Zustimmungen:
    17
    Geschlecht:
    männlich
    Mal Spaß und abgewandelte Star Wars Zitate zur Seite.
    Du handhabst da wirklich mit ein paar großen Zahlen, hierfür sollte der primitive Datentyp long (Siehe auch Long) ausreichend sein.
    Danach bleibt dir für dieses Problem, sollte das Limit von long ebenfalls überschritten werden, beispielsweise noch BigInteger aus dem java.math Package.
     
    MBK gefällt das.
  3. GasGas

    GasGas Neuling Nutzer

    Registriert seit:
    2. November 2017
    Beiträge:
    4
    Zustimmungen:
    5
    Geschlecht:
    männlich
    Ich habe gar nicht mehr auf long auf gedacht :banghead::banghead:.....

    Danke!
     
  4. RiotSeb

    RiotSeb Moderator Moderator

    Registriert seit:
    1. November 2017
    Beiträge:
    3
    Zustimmungen:
    4
    Geschlecht:
    männlich
    Ich weiß zwar nicht, wofür du diese riesige Zahl brauchst (Entfernung? Kaufpreis?) aber du könntest sie runterskalieren, in dem du z.B alle Zahlen die diese Sache(Entfernung? Kaufpreis?) beschreiben etwa durch 1000 teilst. Dies kann nützlich sein, wenn einem die Zahlen irgendwann zu groß werden.

    Gruß Sebastian
     
  5. GasGas

    GasGas Neuling Nutzer

    Registriert seit:
    2. November 2017
    Beiträge:
    4
    Zustimmungen:
    5
    Geschlecht:
    männlich
    Gute Idee aber ich muss noch zu Zahlen Größen kommen die max. 100 Quadrillion betragen...

    Das nächste Problem ist die Datenbank da ich mich nicht so gut mit SQL bzw. MySql auskenne stellt sich das nächste Problem die Limits dessen Integers (int(11)).
     
  6. SirYwell

    SirYwell Moderator Moderator Spender

    Registriert seit:
    2. November 2017
    Beiträge:
    4
    Zustimmungen:
    1
    Geschlecht:
    männlich
    Da kommt echt die Frage auf, für was du diese Zahlen brauchst. Aus deinem Code entnehme ich, dass es Kosten sind. In Java kannst du BigIntegers verwenden und deinen Datentyp von int/long ebenfalls auf BigInteger oder String umstellen. Auch in der Datenbank wäre es wahrscheinlich das einfachste, so große Zahlen als varchar zu speichern.