現在、自分は以下のようなことをしています。
・2点の座標が同座標にあたらないかチェックしています。
#define TOL (0.1)//誤差の許容範囲(TOL以下のときは誤差とみなす) if (point1->x - point2->x < TOL && point2->x - point1->x < TOL) {//x座標の誤差確認 if (point1->y - point2->y < TOL && point2->y - point1->y < TOL) {//y座標のごさく確認 return ERROR;//point1,point2が同じ座標を指してるためERROR } }
このような内容で確認をしたいのですが、
以下の数値を入力した場合、ERRORが返されました。
座標1x,y = (1.2, 2)
座標2,x,y= (1.1, 2)
自分的には、
それぞれif文内では(-0.100000 0.100000 0.000000 0.000000)のような値が計算されると考えていただので、
ERRORは返されないと考えておりました。
そうすればうまく動作するか教えていただけますでしょうか?
またこのようにコードを書いたほうがいいなどもありましたら教えて下さい。
以上です。
よろしくお願いします。
負の数でおかしなことになるので abs を使いましょう。
そこのツメが甘かったのは私の責です。質問者は前の質問の回答からこの質問を起こしているので。
すみません。コメント見てわからないことがありました。
if文は0 またそれ以外で判定していると考えています。
その判定をする時に負の数はやはり良くないのでしょうか???
あれ? 負の値でもいいよなぁ...指摘をちゃんと理解してないかしら。NGのケースを教えて下さい>Zuishinさん
(fabsのほうが素直かなぁ、と思いつつあの式にしたので自分でもちょっと怪しさを感じていたりして慌ててうごいちゃったけど)
よく見ると、確かに負の数でも問題ありませんね。すみません、私の間違いです。
了解です。まぁ、fabsのほうが素直なのでそのままにしておきましょう。> Zuishinさん
#普通でないことをやると他人も自分も惑わされる...ということで。
> その判定をする時に負の数はやはり良くないのでしょうか???
関係ないです。判定基準は0かそうでないか、だけですので。
勘違いしたのは、比較対象が負の値(例えば変数aと-100)を比較しても正しく比較できるのか、みたいな話です。
余計なことをして惑わせてしまいました。ごめんなさい。
回答5件
あなたの回答
tips
プレビュー