看板 C_and_CPP 關於我們 聯絡資訊
在運算上需要10的0次方到5次方 但始終失敗 後來找出是在算pow函式時出了問題 於是寫了段簡短版的來試 DEV上跑這段程式 #include<stdlib.h> #include<stdio.h> #include<math.h> int main() { double i; for(i=0;i<=5;i++) { printf("%d\n",(int)pow((float)10,i)); } system("pause"); } 竟然出現 1 10 99 1000 9999 100000 想了很久還是沒找到答案 同樣的程式丟到Visual C 就解決了 囧... 怎麼會這樣...浪費了我寶貴的青春... Dev C真是跟我有仇...被他整了好幾次 還是跳到Visual好了 -- █████████████i██ 選項 ┌─╥─┐◣。┌─╥─┐〒 〒┌─╥─┐ 頂可愛的口卡口卡獸回列表 ╞╦╩╦╡ ╞╦╩╦╡▼▼▼▼╞╦╩╦╡ 頂問號回答問題 ╞╩╦╩╡ ╞╩╦╩╡▲▲▲▲╞╩╦╩╡ DOOHDLIHCψ └─╨─┘。 ˙ 。└─╨─┘╨─┘ ︴︴ 口卡口卡,別頂錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.73.175.7
byby615:為什麼要強制轉換型態呀!? 11/27 12:00
byby615:把%d換成%f試試看 11/27 12:03
byby615: 並且把(int)刪掉 11/27 12:04
byby615:pow的回傳值是浮點數型態 所佔記憶體較int大 所以強制轉 11/27 12:09
byby615:int型態會錯誤 11/27 12:10
loveme00835:因為浮點數的誤差阿...算整數怎麼會用 pow 呢? 自己寫 11/27 12:11
loveme00835:一個迴圈來算吧... 11/27 12:11
mabus:printf("%0.f\n",pow(10,i));//這樣應該就可以了吧? 11/27 16:01
justdemon:另外 把double當作loop的counter基本上會有問題 11/27 16:03
johnhmj:你就用VC++吧!除錯也比較快。 11/27 18:20
Yshuan:這問題看超過五次了 = = 我用linux下gcc 是沒這問題 11/27 18:25
johnhmj:等一下,會不會是你上面程式碼貼錯? 11/27 18:39
pcyu16:才六個數.. const int pow10[6] 直接填進去比較快 11/27 18:40