作者nerv3890 (nerv3890)
看板Programming
標題[問題] 關於運算出的結果,小數點都消失問題...
時間Wed Oct 21 17:45:58 2009
如題
小的碰到了很怪的麻煩
先奉上程式碼
#include "stdafx.h"
#include "iostream"
#include <iomanip>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x=0;
double a=0;
for(int i=0;i<5000;i++){
if((x%2)==0)
a = a + (1/((i*2)+1));
else
a = a - (1/((i*2)+1));
x++;
}
cout << "π is:" << setprecision(8) << a << endl << endl;
system("pause");
return 0;
}
a cout出來的結果是1
原本應該要是1.34........的
等於說小數點後都被省略
可是a是double,怎麼可能會這樣
我後來自己做過測試
我讓 a = 1/2 、 a = 1/3
cout出來的結果竟然都是0
真的不知道問題出在哪
希望有人能幫忙解答
萬事拜託了 <(_ _)>
謝謝
--
◤ ╭
● 嫂子 叫我鬍子就好了 _(
▁)
▁
◤龍▃▄▅▄ 我會很有禮貌的 ( ﹎﹎ )
§ ● ● ╯ = = │
◣ ︶ ◣─ ◢
─ ◥◤) ψmroscar ╰斗╯
◢ | |
三明書局-你所不知道的關二哥 ◥
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.126
※ 編輯: nerv3890 來自: 140.112.241.126 (10/21 18:03)
1F:推 legendmtg:1.0/(i*2)+1 140.138.16.212 10/21 18:20
2F:→ nerv3890:感謝解答 但我好疑惑為何加個.0就成功了140.112.241.126 10/22 22:24
3F:推 Bencrie:型態問題 ... 沒 .0會變成int,小數會刪掉 140.121.197.32 10/22 23:19