Status
Für weitere Antworten geschlossen.

GasGas

Neuling
Nov 2, 2017
4
Hey!

Ich habe ein Problem mit den Limits des Integers.

Meine Problemstellung:

Java:
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;
    }

Java:
   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.
Java:
Moon(7, "Moon", 50000000000, 50000000, 50, 24560);
Die Frage:
Wie kann ich dieses Limit umgehen?

lg GasGas
 
  • Like
Reaktionen: MBK

Taminoful

Administrator
Moderator
Curator
Donator
Senior
Okt 28, 2017
14
Die Grenzen von einem Integer zu hintergehen ist eine Macht, die nur einer erlangt hat.
Aber wenn wir zusammen arbeiten, dann können wir das Geheimnis lüften.

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.
 
  • Like
Reaktionen: MBK

RiotSeb

Senior
Nov 1, 2017
3
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
 

GasGas

Neuling
Nov 2, 2017
4
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)).
 

SirYwell

Moderator
Donator
Nov 2, 2017
7
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.
 
Status
Für weitere Antworten geschlossen.

Users who are viewing this thema