读书人

一个小疑点却让小弟我纠结

发布时间: 2012-02-12 17:16:34 作者: rapoo

一个小问题,却让我纠结

C/C++ code
#include "Stdio.h"#include "Conio.h"#include "math.h"main(){int k=1; float m=1,pi=1,i=2; while(fabs(m)>1e-6){k=-k; m=k/(2*i-1); pi=pi+m; i++;}pi=pi*4;printf("pi=%10.6f\n",pi);getch();}

运行结果很正常,是3.141594


但是第二个,很蛋疼啊
C/C++ code
#include "Stdio.h"#include "Conio.h"#include "math.h"main(){int i=2; float m=1,pi=1,k=1; while(fabs(m)>1e-6){k=-k; m=k/(2*i-1); pi=pi+m; i++;}pi=pi*4;printf("pi=%10.6f\n",pi);getch();}

只是i和k对调一下,此程序就显示不出任何结果!
这是为什么啊!求高手解释,最好能运行下,或许是电脑问题!谢谢啦!

[解决办法]
1.优先使用double

2.如果是VC,编译选项里换一种浮点模型试试
[解决办法]
我用楼主的代码没问题,VS2005的环境,编译成C++代码。是不是你自己环境的问题??
[解决办法]
因为你换了不仅仅是两个变量,还改变了类型,int 和float,你看看前后,i和k的数据类型变了,那么精度就会丢失,不如如果你定义int型变量,将一个小数赋给它,它只保留整数部分,误差很大,建议都用浮点型,就不会出错了
[解决办法]
float和int表示的数其范围和精度不同。

读书人网 >C语言

热点推荐