Почему 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-битную мантиссу, что указывает на то, что для вычислений используется плавающая точка двойной точности, что является стандартным.

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