无论如何,Rcpp C++ 都会截断小数位
Rcpp C++ truncates decimal places no matter what
- 平台:带有 RStudio Server 的 AWS 实例上的 Redhat Enterprise 7.5。
- 可重现的代码:我提前为没有提供代码而道歉,因为如果我将函数简化为可重现的函数,我知道它会工作并产生预期的结果。
- 案例:
- 我有一个使用 Rcpp 用 C++ 编写的函数,该函数包括除以一些非常小的量减法的乘积。例如,它首先执行一些减法,如 (.0012345678 - .0012345677),然后基于此示例,函数应除以 .0000000001,但函数截断减法中的数量 (.001234 - .001234) 并生成零,因此 inf 作为除以零的输出。
- 我的问题是:在 Rcpp 设置中有什么我应该注意的,以使其产生至少 15 位小数,以便减法不会产生 inf 或 nan。我编写了另一个小得多的函数,它工作得很好。但是,无论我做什么,更大的函数都会截断进入除法和减法的双数据类型数字。
请参阅 R FAQ 7.31 和其中的参考资料——您在此处处于 "epsilon" 精度限制。
Rcpp 使用与 R 和所有其他基于 C 的程序相同的 double
类型。还有long double
,但你可能真正想要的是一个任意/多精度的库,例如GNU mpfr which also has an R package Rmpfr。
- 平台:带有 RStudio Server 的 AWS 实例上的 Redhat Enterprise 7.5。
- 可重现的代码:我提前为没有提供代码而道歉,因为如果我将函数简化为可重现的函数,我知道它会工作并产生预期的结果。
- 案例:
- 我有一个使用 Rcpp 用 C++ 编写的函数,该函数包括除以一些非常小的量减法的乘积。例如,它首先执行一些减法,如 (.0012345678 - .0012345677),然后基于此示例,函数应除以 .0000000001,但函数截断减法中的数量 (.001234 - .001234) 并生成零,因此 inf 作为除以零的输出。
- 我的问题是:在 Rcpp 设置中有什么我应该注意的,以使其产生至少 15 位小数,以便减法不会产生 inf 或 nan。我编写了另一个小得多的函数,它工作得很好。但是,无论我做什么,更大的函数都会截断进入除法和减法的双数据类型数字。
请参阅 R FAQ 7.31 和其中的参考资料——您在此处处于 "epsilon" 精度限制。
Rcpp 使用与 R 和所有其他基于 C 的程序相同的 double
类型。还有long double
,但你可能真正想要的是一个任意/多精度的库,例如GNU mpfr which also has an R package Rmpfr。