重複の可能性:
これらの数値が等しくないのはなぜですか?
次の 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)}