Re: [問題] 關於運算出的結果,小數點都消失問題...

看板Programming作者時間14年前 (2009/10/22 02:01), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《nerv3890.bbs@ptt.cc (nerv3890)》之銘言: > 如題 > 小的碰到了很怪的麻煩 > 先奉上程式碼 > #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)); ^^^^^^^^^^^ 這邊 / 前後都是整數, 因此做的是整數除法, 不管此刻 i 的值是 0 ~ 4999 中那個數字, 這段算出來的結果都是 0 自己強迫轉型一下: a = a + ((double)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 > 真的不知道問題出在哪 > 希望有人能幫忙解答 > 萬事拜託了 <(_ _)> > 謝謝 -- ╭╢ 師大資訊白色情迷 ╟┬─ ⊙ Origin : bbs.csie.ntnu.edu.tw ├╨→ 140.122.185.139←╜╰─ ☆ From : alg.csie.ntnu.edu.tw

10/28 12:42, , 1F
是double還是float啊?
10/28 12:42, 1F
文章代碼(AID): #1AtqnaSJ (Programming)
文章代碼(AID): #1AtqnaSJ (Programming)