作者BoxsterX (Alice)
看板C_and_CPP
標題[問題] 在DVE C上奇怪的問題
時間Sat Nov 27 11:04:03 2010
在運算上需要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