我正在尝试创建一个函数,该函数计算git rebase
数量级的大数字的总和。如下所示,此question中描述的方法不起作用。我试图提出一个可以完成此任务的功能,但还没有走得很远。
输入将采用100^100
的形式,其中a^b
和1 < a, b < 100
和a
是整数。因此,从这个意义上讲,我愿意将b
设为接受两个参数的函数。
digitSumLarge
请考虑以下测试:
digitSumLarge <- function(x) {
pow <- floor(log10(x)) + 1L
rem <- x
i <- 1L
num <- integer(length = pow)
# Individually isolate each digit starting from the largest and store it in num
while(rem > 0) {
num[i] <- rem%/%(10^(pow - i))
rem <- rem%%(10^(pow - i))
i <- i + 1L
}
return(num)
}
# Function in the highest voted answer of the linked question.
digitsum <- function(x) sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10)
有什么办法可以在R中编写这样的函数吗?
答案 0 :(得分:2)
您需要任意精度数字。带有R的数字(双精度浮点数)的a^b
只能以有限的精度表示,而不能完全代表足够大的输入。
library(gmp)
a <- as.bigz(13)
b <- as.bigz(67)
sum(as.numeric(strsplit(as.character(a^b), split = "")[[1]]))
#[1] 328