2010-03-10 112 views
5

我只是在思考是否可以創建自己的數據類型? 因此,如果您需要更高的精度,這不受基本類型之一的支持,您可以「創建」自己的滿足要求。Java:做自己的數據類型? (例如long long double?)

這是可能的和如何?

+3

我會建議你閱讀關於面向對象編程。您可以使用類來定義您自己的數據類型。 – Jonathan 2010-03-10 13:57:29

+3

用戶定義的java類也是一種類型!只需添加一些long類型的成員,以保存整數和小數部分。添加方法添加/減去,然後你去! – Elister 2010-03-10 13:58:16

+0

@Andreas Hornig隨時接受回答你的問題的答案。 – Bozho 2010-03-15 15:10:48

回答

16

看看BigDecimal

不可變的,任意精度的有符號十進制數

並回答你的問題 - 是的,你可以箱子的數據類型,但它們不能是基本類型(如int,double等)。他們必須課,就像BigDecimal(和BigInteger)的情況下

而且使用Big*類進一步的建議 - 正如所寫的,他們是不可改變的。這意味着調用add(..)不會更改對象 - 它會返回反映更改的新對象。即

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

你不能用Java創建自己的自定義的值類型,如果這就是你在問什麼。當然,您可以創建自己的參考類型 - 畢竟,這就是Java中的每個類。

但正如其他人所說,BigDecimal(和BigInteger)應該是您的數值類型的更準確的起點。

1

一切都是可能的。

然而,這並不意味着有人還沒有做過,而且比以往任何時候都更有效。

BigInteger和BigDecimal是你在找什麼。