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 に答える