看板 C_and_CPP 關於我們 聯絡資訊
我想計算兩個座標 x1 y1 和 x2 y2 的距離是否大於半徑 是的話印出加入成功 否的話印出加入失敗 在這邊設的半徑為 3 根據距離函式算出來的也是3 不知道為啥怎麼改都還是加入失敗 改成小於等於半徑印出加入成功 大於印出加入失敗也都是一樣 想請問一下哪邊出問題了嗎 非常感謝 <(_ _)> #include <cstdlib> #include <iostream> #include <math.h> #define radius 3 using namespace std; bool check_its_point(double , double , double , double ); double distance(double , double , double , double ); int main(int argc, char *argv[]) { // 8.24499, -0.98998 要輸入的數值 與 6, 1比較 // 5.75501, 3.98998 要輸入的數值 與 6, 1比較 // 7.47141, -1.61438 要輸入的數值 與 6, 1比較 if( check_its_point(5.75501, 3.98998 ,6 ,1 ) == true) { cout << "加入成功" << endl; } else { cout << "加入失敗" << endl; } system("PAUSE"); return EXIT_SUCCESS; } bool check_its_point(double x1, double y1, double x2, double y2) { double r = radius; cout << distance(x1, y1, x2, y2 ) << endl; if( distance(x1, y1, x2, y2 ) > r ) { cout << x1 << "," << y1 << "到" << x1 << "," << y2 << "距離大於" << r <<" 不存入" << endl; //cout << x1 << "," << y1 << "到" << x2 << "," << y2 << "距離小於" << r <<" 存入" << endl; return false; } return true; } double distance(double x1, double y1, double x2, double y2) { double distance = 0; distance = sqrt( pow((x2 - x1), 2) + pow((y2 - y1), 2)); cout << "距離 = " << distance << endl; return distance; } -- 柏油->Two-Face ◢~ 你想作什麼? █ ██~ 正面就炸你 放開那女孩! \ 反面炸你家 ▔▔▔▔▔▔▔▔▔ ▔▔ -◎-- / ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ - 有時正氣凜然 20080722 pm 18:20左右 ψQSWEET 有時卻兇猛霸道 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.128.207
plover:double精準度的問題?! 02/20 00:47
tsaiminghan:同上 02/20 01:00
lalawolala:是喔 @_@ 請問怎麼改可以讓他正常判斷哩? 試半天還是錯 02/20 01:01
tsaiminghan:我沒看你的碼不過如果用double時,不能用==來比較 02/20 01:06
tsaiminghan:之前看的方式是類似abs(a-b) < 0.0000001之類的方式 02/20 01:07
tsaiminghan:看來不是這個問題 02/20 01:13
tsaiminghan:check_its_point似乎只回傳true耶? 02/20 01:15
tsaiminghan:你的return false是真的mark掉了? 02/20 01:16
lalawolala:return false 是測試的時候忘記消掉 不過消掉後 02/20 11:43
lalawolala:還是無法正常判斷 0.0 02/20 11:43
※ 編輯: lalawolala 來自: 210.240.186.16 (02/20 12:13)