2
我是新的C程序員,我正在開展一個學校項目,我必須近似值或pi。我的教授表示,我們必須使用long double
來聲明所有整數項。控制檯顯示我向用戶詢問用於近似pi的術語數量。我爲條款數輸入1,但代碼返回-0.00000000而不是4.00000000。C - long double和printf問題
#include <stdio.h>
#include <math.h>
long double approx1(int terms)
{
long double pi = 0;
long double num = 4;
long double denom = 1;
int i;
for(i=1; i <= terms; i++)
{
if(i%2 != 0)
{
pi=pi+(num/denom);
}
else
{
pi=pi-(num/denom);
}
denom = denom + 2;
}
printf("%.8Lf\n", pi);
}
int main()
{
int terms;
long double pie;
printf("input number of terms, input 0 to cancel\n");
scanf("%d", &terms);
while(terms != 0)
{
if(terms > 0)
{
pie = approx1(terms);
printf("%.8Lf\n", pie);
printf("GG mate\n");
break;
}
else
{
printf("Incorrect input, please enter a correct input\n");
scanf("%d", &terms);
}
}
}
我還沒有得到它的任何成功的工作(它雖然適用於浮動雖然)。我究竟做錯了什麼? (我正在使用包含編譯器btw的代碼塊。)
「使用long double的所有整數術語」long double「不是整數類型。你什麼意思? – Olaf
如果您的Code :: Blocks IDE正在使用MinGW GCC編譯器(我認爲這很常見),那麼您可能也會遇到以下問題:http://stackoverflow.com/a/7136886/12711我相信新版本的MinGW通過爲'printf()'實現自定義支持來解決問題,而不是僅僅依靠使用'msvcrt.dll'。所以你可能想試試MinGW或MinGW-w64的更新版本。 –