|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【原问题】 根据以下已知公式(图片里)求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)
题目求pi公式
请问 自己写的代码求得pi为什么第七位小数是7而不是6?谢谢
(1)自己的代码:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- double i=1;
- double pi=0.0;
- double term=1.0;
- int sign=1;
- do
- {
- term=sign/i;
- pi+=term;
- sign=-sign;
- i+=2;
- }while(fabs(term)>=1e-8);
- printf("%.7f\n",pi*4);
- return 0;
- }
复制代码
(2)答案给的代码:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int sign = 1; // 表示符号
- double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值
- while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
- {
- pi = pi + term;
- n = n + 2;
- sign = -sign;
- term = sign / n;
- }
- pi = pi * 4;
- printf("pi = %10.7f\n", pi);
- return 0;
- }
复制代码
本帖最后由 ExiaGN001 于 2023-1-12 18:28 编辑
事由:代码运行时自动四舍五入了
解决办法:乘以1e7后取整再除以1e7就能解决。
代码:pi=(int)(pi*1e7)/1e7;
有用且设置最佳谢谢!
|
|