Re: [問題] 關於運算出的結果,小數點都消失問題...
※ 引述《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
10/28 12:42, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):