0

可能重复:
为什么这些数字不相等?

下面的 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)}
4

1 回答 1

0

重要的问题是,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)}
于 2012-12-20T03:24:25.610 回答