2012-04-11 32 views
0

Wie kann ich meinen eigenen Datentyp in Java erstellen, die einen 16-Byte-Integer-WertWie kann ich Datentyp in Java erweitern

der längste Datentyp in Java nach Größe speichern könnten, ist „lang“, die 8 -Byte und es könnte 19-stellige Integer-Wert speichern, aber ich möchte die Fakultät von 25 und die Fakultät von 25 ist 26-stellig (15511210043330985984000000). Jetzt ist das Problem, ich habe keinen solchen Dateityp in Java, der solch einen riesigen Wert von 26 Ziffern oder mehr speichern könnte.

falls vorhanden

public long factorial(int number) 
{ 
    int i=1; 
    long factorial=1; 

    for(i=1;i<=number;i++) 
    { 
     factorial = factorial * i; 
    } 
    return factorial; 
} 
+2

[BigInteger] (http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html) – Richante

+0

scheint, Sie müssen eine Klasse erstellen, die 16 Byte oder mehr speichern kann Datenwert und Sie müssen explizite arithmetische oder logische Operationen auf Ihre eigene Art und Weise implementieren oder was Sie tatsächlich benötigen. Dies kann möglich sein, n Byte, wenn Sie mithilfe von Zeichenfolge implementieren können. Und es wird überall generisch sein. –

Antwort

5

Nun das Problem ist, ich habe keine solche Datentypen in Java, die solchen großen Wert von 26-Ziffern speichern könnten oder mehr.

Haben Sie sich java.math.BigInteger angesehen? Beachten Sie, dass dies eine Klasse (ein Referenztyp) und kein Werttyp ist, aber es ist unveränderlich, was bedeutet, dass Sie es als etwas Wert-ähnlich betrachten können.

4

jetzt das Problem ist, ich habe keine solche Datentyp in Java haben, die solche großen Wert

Das ist nicht ganz richtig ist speichern könnte. Es gibt BigInteger.

Siehe this answer für eine Implementierung von Fakultät, die BigInteger verwendet.

Verwandte Themen