Java: свой собственный тип данных? (например, длинный длинный двойной?) - PullRequest
5 голосов
/ 10 марта 2010

Я просто размышляю о том, возможно ли создать собственный тип данных? Поэтому, если вам нужна большая точность, которая не поддерживается ни одним из основных типов, вы можете просто «создать» свою собственную, полностью удовлетворяя ваши требования.

Это возможно и как?

Ответы [ 4 ]

16 голосов
/ 10 марта 2010

Взгляните на BigDecimal

Неизменные десятичные числа со знаками произвольной точности

И чтобы ответить на ваш вопрос - да,Вы можете создать типы данных, но они не могут быть примитивными типами (например, int, double и т. д.).Это должны быть классы, как в случае с BigDecimalBigInteger)

И еще один совет по использованию классов Big* - как написано, они неизменны.Это означает, что вызов add(..) не меняет объект - он возвращает новый объект, который отражает изменение.Т.е.

BigDecimal dec = BigDecimal.ZERO;
dec.add(new BigDecimal(5)); // nothing happens
dec = dec.add(new BigDecimal(5)); // this works
8 голосов
/ 10 марта 2010

Вы не можете создавать свои собственные типы значений в Java, если вы об этом. Конечно, вы можете создавать свои собственные ссылочные типы - это, в конце концов, каждый класс в Java.

Но, как говорили другие, BigDecimalBigInteger) должны быть вашими начальными точками для числовых типов с большей точностью.

2 голосов
/ 10 марта 2010

Звучит так, как будто вы после класса BigDecimal:

http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html

1 голос
/ 10 марта 2010

Все всегда возможно.

Это не значит, что кто-то еще не делал этого раньше, и гораздо эффективнее, чем вы когда-либо.

BigInteger и BigDecimal - это то, что вы ищете.

...