2010-03-10 68 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是你在找什么。