1

私のプログラムの目標は、ユーザーの指示に従って、特定のポイントで円周率をカットすることです。

私はそれを行う方法を理解しましたが、後続のゼロを取り除く方法を理解できません。

#include <stdio.h>
#include <math.h>
int main()
{

int i,length;
double almost_pi,pi;    
printf("How long do you want your pi: ");
scanf("%d", &length);

pi = M_PI;

i = pi * pow(10,length);

almost_pi = i / pow(10,length);






printf("lf\n",almost_pi);

return 0;
}

ユーザーが3を入力すると、3.141が返されますが、3.141000が返されます。

どうぞよろしくお願いします!

4

3 に答える 3

3

これはあなたがやろうとしていることですか?

#include <stdio.h>
#include <math.h>

int main()
{
    int length = 4;
    printf("How long do you want your pi: ");
    if (1 == scanf("%d", &length))
        printf("%.*f\n", length, M_PI);
    return 0;
}

サンプル出力#1

How long do you want your pi: 4
3.1416

サンプル出力#2

How long do you want your pi: 12
3.141592653590
于 2013-03-02T04:33:05.233 に答える
1

printfの追加の引数として、フォーマットパラメータの長さを指定する必要があります。

printf("%.*f\n, length, almost_pi);

この参照.*、「精度はフォーマット文字列で指定されていませんが、フォーマットする必要のある引数の前に追加の整数値引数として指定されている」ことを意味すると述べています。

余談ですが%f、printfではdoubleとfloatの両方に使用できますが%lf、scanfではdoubleに使用する必要があります。ここを参照してください。

于 2013-03-02T04:33:14.187 に答える
0

printf( "%。3f \ n"、almost_pi); それを修正します。

于 2013-03-02T04:21:13.487 に答える