它只是一个建议的原因是您可以很容易地编写一个忽略选项值的打印函数。内置的打印和格式化功能确实使用options
值作为默认值。
至于第二个问题,由于 R 使用有限精度算术,因此您的答案在小数点后 15 或 16 位之外就不准确,因此通常不需要更多。这gmp and rcdd包处理多精度算术(通过 gmp 库的接口),但这主要与大整数有关,而不是双精度数的更多小数位数。
数学 or Maple将允许您根据需要提供任意数量的小数位。
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
向量,但如果您遇到条件较差的问题或不稳定的算法,则可能会很有用。