[問題] 有關C語言型態轉換的問題
我使用Dev-C++ 4.9.9.2的環境
程式如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,i;
double ans;
while(1){
ans = 0;
scanf("%d", &n);
for(i=0; i<=n;i++){
ans = ans + (double)1/((2*i)+1) * (i%2 == 0 ? 1 : -1);
/*如果改成下面的樣子就會有問題:
ans = (double)ans + 1/((2*i)+1) * (i%2 == 0 ? 1 : -1);
*/
}
printf("%f\n", ans*4);
}
system("PAUSE");
}
上面的公式是ans = 1 - (1/3) + (1/5) - (1/7) +...+ ((-1)^n)*(1/(2n+1))
我想問的是..
型態轉換的運算子 (float) 放在上面兩個地方..
為什麼會有不一樣的結果??
這個問題可能有點笨..
不過我想好久都想不到為什麼 >"<
型態轉換的動作究竟是怎麼運作的丫??
請版上的高手幫幫我..
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.155.138.9
推
08/05 22:57, , 1F
08/05 22:57, 1F
→
08/05 22:58, , 2F
08/05 22:58, 2F
→
08/05 22:59, , 3F
08/05 22:59, 3F
→
08/05 23:13, , 4F
08/05 23:13, 4F
→
08/05 23:13, , 5F
08/05 23:13, 5F
→
08/05 23:14, , 6F
08/05 23:14, 6F
→
08/05 23:15, , 7F
08/05 23:15, 7F
推
08/05 23:36, , 8F
08/05 23:36, 8F
推
08/05 23:38, , 9F
08/05 23:38, 9F
→
08/05 23:39, , 10F
08/05 23:39, 10F
→
08/05 23:39, , 11F
08/05 23:39, 11F
→
08/05 23:39, , 12F
08/05 23:39, 12F
推
08/06 07:18, , 13F
08/06 07:18, 13F