[英]Trying to calculate Pi
要計算Pi,你可以使用公式pi / 4 = 1-(1/3)+(1/5) - (1/7)+ ...將它乘以4得到Pi我創建了一個公式來計算每個等式相對於其位置1 /(2n-1)的步驟並為其編寫代碼
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
double p = 0;
double pi = 0;
int j = 1;
do
{
if (j % 2 == 1)
{
p = p + (1 / (2 * j - 1));
}
else
{
p = p - (1 / (2 * j - 1));
}
pi = p * 4;
printf("%lf\n", pi);
j++;
} while (j < 10);
return (EXIT_SUCCESS);
}
但它只是推出4.0000
為什么? 我找不到我犯的錯誤。
在聲明中p = p + (1 / (2 * j - 1));
表達式(1 / (2 * j - 1)
得到整數。為了得到預期的結果,將操作數作為浮點類型,即1.0
或(float)(2 * j - 1)
替換聲明
p = p + (1 / (2 * j - 1));/* 1/(2*j-1) results in integer, you won't get expected result */
同
p = p + (1. / (2 * j - 1));/* 1. means making floating type */
在你的表達
1 / (2 * j - 1)
/
兩個操作數都是int
類型,因此它執行整數除法,它會截斷該小數。 如果要執行實際除法,請確保至少有一個操作數具有浮點類型。 您可以通過寫作輕松實現此目的
1.0 / (2 * j - 1)
包含小數點(不帶后綴)的數字常量在C中為double
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.