c - 为什么我总是得到负值?
问题描述
我正在用 c 制作莱布尼茨算法来计算饼图。我不断得到负面结果。是因为我使用的 Long Double 类型吗?
#include <stdio.h>
#include<math.h>
int main()
{
int iterations;
int counter = 1;
long double nextnum = 1.;
long double answer=0.0;
long double temp = 0.0;
printf("Iterations: ");
scanf("%d",&iterations);
while (counter <= iterations)
{
if (counter%2 != 1)
{
answer = temp + (1/nextnum*4);
printf("%1Lf\n",answer);
nextnum = nextnum +2;
temp = answer;
counter++;
}
if (counter%2 == 1)
{
answer = temp - (1/nextnum*4);
printf("%1Lf\n",answer);
nextnum = nextnum +2;
temp = answer;
counter++;
}
}
return 0;
}
解决方案
你在错误的地方乘以 4。尝试按照 原始公式计算 pi/a
#include <stdio.h>
#include<math.h>
int main()
{
int iterations;
int counter = 1;
long double nextnum = 3.0;
long double answer = 0.0;
long double temp = 1.0;
printf("Iterations: ");
scanf_s("%d", &iterations);
while (counter <= iterations)
{
if (counter % 2 != 1)
{
answer = temp + (1 / nextnum);
printf("%1Lf\n", answer);
temp = answer;
}
else
{
answer = temp - (1 / nextnum);
printf("%1Lf\n", answer);
temp = answer;
}
nextnum += 2;
counter++;
}
printf("\n Answer: %1Lf\n", 4 * answer);
return 0;
}
推荐阅读
- vue.js - vuex 未知突变类型:Nativescript 应用程序
- sum - AMPL如何有一个求和约束
- scala - 是否可以将隐式传递给 PartialFunction?
- extjs3 - ExtJS 3.2.1 Combobox 下拉设置值(如果存在)
- angular - Angular 2+中的状态基础路由或带有状态的抽象路由
- ruby-on-rails - 用于多租户应用程序(子域)的 ngrok + stripe webhook
- javascript - 如何为 fullcalendar.io 获得正确的格式
- scala - 如何在 spark-avro 2.4 模式中设置logicalType?
- python - 如何处理奇怪的 Pandas 错误“无法打开哈希表......”
- selenium-webdriver - 如何允许边缘网络浏览中的麦克风/摄像头起诉硒