Я новичок в Java, и наш профессор избегал обсуждать BinInteger и BigDecimal классы из пакета java.math. Интересно, почему они не так полезны? Когда именно нам нужно использовать BigInteger?Почему мы не видим большого использования BigInteger?
ответ
Вы не нуждаетесь в них особенно часто, но когда вы действительно нуждаетесь в них, они вам действительно нужны. Вам действительно нужны только они, когда вам нужно фактически хранить целые числа точности или реальные числа. long
доходит до 2 -1, что довольно большое число.
Десятичные типы данных имеют важное значение при работе с валютами
примитивного типа Int и долго имеют ограниченный диапазон значений, которые они могут представлять. То же самое верно для примитивов с плавающей запятой float и double. Тем не менее, вы также сталкиваетесь с проблемой ограниченной точности. Для многих случаев это не создает никаких проблем, однако, когда требуются большие числа или точная точность (например, в банковском приложении вы хотите быть как можно точнее), вы будете использовать BigInteger
и BigDecimal
.
Всегда использовать примитивы, когда это возможно, потому что:
- Они имеют оператор, а не методы, поэтому код легче для чтения/записи.
- Они намного эффективнее.
long
, самый большой примитивный целочисленный тип, имеет максимальное значение, 9,223,372,036,854,775,807
или 2^63 - 1
, и минимальное значение -2^63
. double
, самый точный примитивный тип с плавающей точкой, имеет 64 бита точности, то есть a lot.
Однако, если вам действительно нужно произвольно большое/маленькое целое число или произвольно точное десятичное число, то подходят типыи BigDecimal
. Однако такие сценарии не настолько распространены, что, вероятно, поэтому ваш профессор не обсуждал эти типы.
BIGINT всегда является продуктом двух интс. Пример 99X99 = 10000 в два раза больше.
Обе библиотеки, о которых вы упомянули, используют их, если они этого не сделали, они не существовали бы. Однако ваш учитель, вероятно, решил не обсуждать их, поскольку вы, вероятно, не будете использовать их в своем конкретном курсе. (Он должен поставить предел где-то, вы не можете покрыть всю библиотеку Java в одном курсе.)
«Тип данных BigDecimal' необходим при работе с валютами» – JockX
Я думал больше о нескольких языках; если Mobasher учится, он должен _хорошо учиться больше, чем просто Java! Мне «повезло», чтобы узнать Эйфеля в колледже! –