Почему R округляет натуральные логарифмы, как это делает?
Я был озадачен разницей в R:
log(0.0001)/0.0001
-92103.4
и, например, рендеринг калькулятора Google:
ln(0.0001)/0.0001
-92103.4037198
почему округление такое разное?
1 ответ
Решение
Увеличение отображаемой точности, например:
options(digits=20)
исправляет "проблему"
> log(0.0001)/0.0001
[1] -92103.4
> options(digits=20)
> log(0.0001)/0.0001
[1] -92103.403719761816319
Обратите внимание, что внутренняя точность всегда высока и может быть просмотрена с .Machine
переменная:
> .Machine
#Many other details here
$double.digits
[1] 53
Вышеизложенное указывает на то, что машина имеет 53-битную мантиссу, что указывает на то, что для вычислений используется плавающая точка двойной точности, что является стандартным.