[問題] 浮點數運算~的練習問題

看板C_and_CPP作者 (顧正妹)時間13年前 (2011/05/15 08:43), 編輯推噓2(2010)
留言12則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV C++ 問題(Question): #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { float a,b,c; printf("請輸入A:"); scanf("%f",&a); printf("\n請輸入B:"); scanf("%f",&b); printf("\n請輸入C:"); scanf("%f",&c); if((pow(a,2)+pow(b,2))==pow(c,2)||(pow(a,2)+pow(c,2))==pow(b,2)||(pow(c,2)+pow(b,2))==pow(a,2)) printf("\n是直角三角形\n"); else printf("\n不是直角三角形\n"); system("PAUSE"); return 0; } 預期的正確結果(Expected Output): 我輸入3 4 5理論上應該要出現"是直角三角形" 錯誤結果(Wrong Output): 不論我打甚麼都只會出現"不是直角三角形" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.218.220

05/15 08:47, , 1F
平方而已就自己寫 a*a 就好....= =
05/15 08:47, 1F

05/15 09:08, , 2F
第11戒
05/15 09:08, 2F

05/15 10:58, , 3F
標題改一下...
05/15 10:58, 3F

05/15 11:16, , 4F
改用int? 精度問題嗎....
05/15 11:16, 4F
※ 編輯: j3234567 來自: 59.125.207.199 (05/15 11:19)

05/15 11:21, , 5F
剛剛看完十一戒~想請問一下~
05/15 11:21, 5F

05/15 11:23, , 6F
雖然變數設定是浮點數,可是我輸入的是整數
05/15 11:23, 6F

05/15 11:25, , 7F
沒有溢位的問題,也沒有極大極小相減的問題,為什麼還是
05/15 11:25, 7F

05/15 11:25, , 8F
會有誤差?
05/15 11:25, 8F

05/15 12:17, , 9F
pow函數天生的缺點(?) pow(a,b)=exp(b*log(a)) 造成的
05/15 12:17, 9F

05/15 12:18, , 10F
你不如把每個pow的結果都印出來 可能可以看出問題
05/15 12:18, 10F

05/15 12:19, , 11F
log跟exp運算造成的誤差~
05/15 12:19, 11F

05/15 12:38, , 12F
我複製貼上 輸入3 4 5是直角三角形哩 0.0
05/15 12:38, 12F
文章代碼(AID): #1Dpo74Nc (C_and_CPP)