我想M
在 Rcpp 中将矩阵四舍五入到任意精度。在 R 中这样做特别容易:
M <- matrix(rnorm(4), 2, 2)
M
[,1] [,2]
[1,] 0.04463484 0.1455878
[2,] 1.77416096 1.0787835
round(M,2)
[,1] [,2]
[1,] 0.04 0.15
[2,] 1.77 1.08
这在 Rcpp / C++ 中被证明是有点挑战的。
有一个round()
函数,但是不幸的是它只能四舍五入到最接近的整数。出于输出目的,例如"%.2f"
格式可用于四舍五入到两位小数。如果要在进一步计算中使用四舍五入的数字,则可以通过玩弄来将单个元素四舍五入到任意精度floorf
,roundf
以及ceilingf
使用手动调整的不同缩放因子的函数,请参阅此处的讨论和建议的解决方案。
因此,一种可能的前进方式是将上述方法应用于矩阵的每个元素(或更有效地应用于每一列)M
。这似乎不必要地复杂,我想知道你们中的一个人是否有一个更有效/优雅的解决方案,用于在 Rcpp 中将矩阵舍入为任意精度。