我在 R 中编写了一个代码来反转一个数字。但我得到了inf作为输出。
digit<-512
rev_num<-0
while(digit>0){
rev_num=rev_num*10 + digit %% 10
digit=digit / 10
}
print(paste(rev_num))
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这段代码中的错误?
您需要digit = digit %/% 10代替/where%/%用于整数除法。并且您需要整数除法,因为 using/给出剩余小数位,并且您的 while 循环不会停止,直到数字达到您的机器可以表示的最小数字,而您的 rev_num 在每次迭代中保持 10 的倍数增长,达到 Inf。
速战速决你的方法将增加floor为digit10分的时候。
digit<-512
rev_num<-0
while(digit>0){
rev_num=rev_num*10 + digit %% 10
digit= floor(digit / 10)
}
rev_num
#[1] 215
Run Code Online (Sandbox Code Playgroud)
里面也有stri_reverse功能stringi
stringi::stri_reverse(512)
#[1] "215"
Run Code Online (Sandbox Code Playgroud)