看板Programming
标 题Re: [问题] 关於运算出的结果,小数点都消失问题...
发信站白色情迷 (Wed Oct 21 22:09:23 2009)
转信站ptt!news.ntu!mars.scc.ntnu!snowBBS
※ 引述《[email protected] (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
1F:→ sk8er411:是double还是float啊? 125.231.65.161 10/28 12:42