В help("options")
мы читаем:
цифр: управляет количеством значащих (см. Знак) цифр для печати при печати числовых значений c. Это только предложение. Допустимые значения: 1 ... 22 со значением по умолчанию 7. См. Примечание в print.default о значениях, превышающих 15.
Ваше значение больше 15, поэтому давайте проверим примечание в help("print.default")
:
Большое количество цифр
Обратите внимание, что для больших значений цифр, в настоящее время для цифр> = 16, вычисление количества значащих цифр будет зависеть от внутренней платформы ( C library) реализация функции sprintf ().
Это объясняет, почему вы наблюдаете разные результаты на разных компьютерах. Действительно, в моей системе:
options(digits=20)
42.616999999999997 + 42.405999999999999 + 42.869
#[1] 127.892
Однако вы можете принудительно установить указанное c число цифр после десятичной точки, используя функцию R sprintf
:
sprintf("%.17f", 42.616999999999997 + 42.405999999999999 + 42.869)
#[1] "127.89199999999999591"
Обратите внимание, что все это только о том, как печатать числа. Внутри R всегда использует двойную точность (пожалуйста, прочитайте этот пост , чтобы понять последствия).
Если вам нужны более точные результаты, вам нужно использовать числа произвольной точности, например, используя пакет R Rmpfr .