Rcpp C ++会舍弃小数位

时间:2018-08-15 15:05:32

标签: r decimal rcpp truncate digits

  • 平台:具有RStudio服务器的AWS实例上的Redhat Enterprise 7.5。
  • 可复制的代码:对于没有提供代码,我深表歉意,因为如果将功能简化为可复制的功能,我知道它会起作用并产生预期的结果。
  • 案例:
  • 我有一个使用Rcpp用C ++编码的函数,该函数包括一些很小的减法乘积的除法。例如,它首先执行一些减法,例如(.0012345678-.0012345677),然后根据此示例,该函数应除以.0000000001,但是该函数会截断减法中的数量(.001234-.001234)并产生零,因此inf作为零除的输出。
    • 我的问题是:在Rcpp设置中我应该注意什么,使其至少产生15个小数位,以便减法不会产生inf或nan。我已经编写了另一个小得多的函数,它工作得很好。但是,无论我做什么,更大的函数都会截断用于除法和减法的双精度数据类型数字。

1 个答案:

答案 0 :(得分:2)

请参阅R FAQ 7.31并在其中进行引用-您在此处处于“ epsilon”精度极限。

Rcpp使用与R和其他每个基于C的程序相同的double类型。还有long double,但是您可能真正想要的是一个任意/多精度库,例如GNU mpfr,它也有一个R package Rmpfr