一个小问题,却让我纠结
- 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表示的数其范围和精度不同。