Причина, по которой это всего лишь предположение, заключается в том, что вы можете довольно легко написать функцию печати, которая игнорирует значение параметров. Встроенные функции печати и форматирования по умолчанию используют значение options
.
Что касается второго вопроса, поскольку R использует арифметику с конечной точностью, ваши ответы не являются точными за пределами 15 или 16 десятичных знаков, поэтому, в общем, больше не требуется. Пакеты gmp и rcdd имеют дело с арифметикой с множественной точностью (через взаимодействие с библиотекой gmp), но это в основном связано с большими целыми числами, а не с десятичными разрядами для ваших двойников.
Mathematica или Клен позволит вам указать столько десятичных знаков, сколько пожелает ваше сердце.
EDIT:
Возможно, было бы полезно подумать о разнице между десятичными знаками и значащими цифрами. Если вы проводите статистические тесты, основанные на различиях, превышающих 15-ю значимую цифру, то ваш анализ почти наверняка будет бесполезным.
С другой стороны, если вы просто имеете дело с очень маленькими числами, это не проблема, поскольку R может обрабатывать числа, такие как .Machine$double.xmin
(обычно 2e-308).
Сравните эти два анализа.
x1 <- rnorm(50, 1, 1e-15)
y1 <- rnorm(50, 1 + 1e-15, 1e-15)
t.test(x1, y1) #Should throw an error
x2 <- rnorm(50, 0, 1e-15)
y2 <- rnorm(50, 1e-15, 1e-15)
t.test(x2, y2) #ok
В первом случае различия между числами возникают только после многих значащих цифр, поэтому данные «почти постоянны». Во втором случае, хотя размеры различий между числами одинаковы, по сравнению с величиной самих чисел они велики.
Как уже упоминалось в e3bo, вы можете использовать числа с плавающей запятой множественной точности, используя пакет Rmpfr
.
mpfr("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825")
Они медленнее и требуют больше памяти, чем обычные (двойной точности) numeric
векторы, но могут быть полезны, если у вас плохо обусловленная проблема или нестабильный алгоритм.