我只是在思考是否可以创建自己的数据类型? 因此,如果您需要更高的精度,而其中一种基本类型不支持,您可以“创建”自己的完整填充物。
这可能吗?如何?
答案 0 :(得分:16)
不可变,任意精度的带符号十进制数
回答你的问题 - 是的,你可以创建数据类型,但它们不能是原始类型(如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
答案 1 :(得分:8)
如果您正在询问,则无法在Java中创建自己的自定义值类型。当然,您可以创建自己的引用类型 - 毕竟,这就是Java中的每个类。
但正如其他人所说,BigDecimal
(和BigInteger
)应该是更精确的数字类型的起点。
答案 2 :(得分:2)
听起来像你可能在BigDecimal
课程之后:
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html
答案 3 :(得分:1)
一切都是可能的。
这并不意味着有人之前没有做过,而且比以往任何时候都更有效率。
BigInteger和BigDecimal就是你要找的东西。