2010-03-10 6 views
5

Ich denke nur darüber nach, ob es möglich ist, den eigenen Datentyp zu erstellen? Wenn Sie also mehr Präzision benötigen, die von einem der Basistypen nicht unterstützt wird, können Sie einfach Ihre eigenen Anforderungen erfüllen.Java: Den eigenen Datentyp verwenden? (zB long long double?)

Ist das möglich und wie?

+3

Ich würde empfehlen, lesen Sie über objektorientierte Programmierung. Sie können Klassen verwenden, um Ihre eigenen Datentypen zu definieren. – Jonathan

+3

Eine benutzerdefinierte Java-Klasse ist auch ein Typ! Fügen Sie einfach einige Typen von Typen hinzu, die lang und lang sind, um ganze oder gebrochene Teile einer Zahl zu enthalten. Fügen Sie Methoden zum Hinzufügen/Subtrahieren hinzu und fertig! – Elister

+0

@Andreas Hornig fühlen Sie sich frei, eine Antwort zu akzeptieren, die Ihre Frage beantwortet. – Bozho

Antwort

16

Werfen Sie einen Blick auf BigDecimal

Immutable, beliebiger Genauigkeit signed Dezimalzahlen

Und Ihre Frage zu beantworten - ja, Sie Kiste Datentypen können, aber sie können nicht primitiv sein Typen (wie int, double, usw.). Sie müssen Klassen sein, genau wie der Fall mit BigDecimal (und BigInteger)

Und ein weiterer Hinweis für die Verwendung der Big* Klassen - wie geschrieben, sie sind unveränderlich. Dies bedeutet, dass der Aufruf von add(..) das Objekt nicht ändert - es gibt ein neues Objekt zurück, das die Änderung widerspiegelt. I.e.

BigDecimal dec = BigDecimal.ZERO; 
dec.add(new BigDecimal(5)); // nothing happens 
dec = dec.add(new BigDecimal(5)); // this works 
8

Sie können Ihre eigenen Wertetypen in Java nicht schaffen, wenn es das ist, was Sie fragen. Sie können natürlich Ihre eigenen Referenz Typen erstellen - das ist, was jede Klasse in Java ist schließlich.

Aber wie andere gesagt haben, sollten BigDecimal (und BigInteger) Ihre Startpunkte für numerische Typen mit mehr Präzision sein.

1

Alles ist immer möglich.

Das bedeutet nicht, dass jemand es vorher noch nicht getan hat, und viel effizienter als je zuvor.

BigInteger und BigDecimal ist, was Sie suchen.

Verwandte Themen