可能重复:
为什么这些数字不相等?
下面的 R 代码是一个更大函数的一部分,它一直跳过 if 语句,只在最后执行 else 语句。有什么建议么?谢谢
if(solv==0){
theta<-pi/2
} else if(solv==1){
theta<-0
} else if(solv==-1) {
theta<-pi
} else{
comb<-top/bottom
theta<-acos(comb)}
可能重复:
为什么这些数字不相等?
下面的 R 代码是一个更大函数的一部分,它一直跳过 if 语句,只在最后执行 else 语句。有什么建议么?谢谢
if(solv==0){
theta<-pi/2
} else if(solv==1){
theta<-0
} else if(solv==-1) {
theta<-pi
} else{
comb<-top/bottom
theta<-acos(comb)}
重要的问题是,是solve
整数吗?
如果不是,那么正如@GSee 在对您问题的评论中所暗示的那样,您的代码中的错误与浮点错误有关
请尝试以下操作
# Set whichever tolerance is acceptable to you
tol <- 1e-16
if(isTRUE(all.equal(solv, 0, tolerance=tol))){
theta<-pi/2
} else if(isTRUE(all.equal(solv, 1, tolerance=tol))){
theta<-0
} else if(isTRUE(all.equal(solv, -1, tolerance=tol))) {
theta<-pi
} else{
comb<-top/bottom
theta<-acos(comb)}