Каков точный смысл произвольной точности?

Для некоторых это может быть очень простым вопросом, но я хотел бы знать значение произвольной точности, которое появляется в первой строке JavaDoc BigInteger:

Неизменные целые числа произвольной точности.

2 ответа

Решение

Термин " фиксированная точность" означает, что во внутреннем представлении сохраняется только определенное количество значащих цифр. Это означает, что вы не сможете представить каждое целое число с величиной, превышающей некоторый порог.

С целыми числами произвольной точности целые числа могут быть настолько большими, насколько вам нужно ("произвольно большим"), и библиотека будет сохранять все цифры до наименее значимой единицы. (Это, очевидно, ограничено объемом памяти на вашем компьютере.)

Это означает, что BigInteger использует столько места, сколько необходимо для сохранения всей стоимости.

принимать int В качестве примера. Имеет фиксированное количество доступных битов. С этим вы можете сохранить значения между -2,147,483,648 а также 2,147,483,647 (Включительно). Так что это тип с фиксированной точностью, а не тип с произвольной точностью. Он не может хранить значения за пределами этого диапазона.

С BigIntegerУ вас нет этой проблемы, потому что как только назначенные биты не достаточно, чтобы сохранить точное значение, BigInteger просто добавит несколько бит, чтобы он мог обработать значение снова.

Произвольное на самом деле не совсем верно, потому что существуют ограничения из-за того, что имеется только ограниченный объем доступной памяти. Этот предел не дается BigInteger класс, но окружение (ВМ / оборудование / ОС).

Другие вопросы по тегам