1

我的程序的目标是在用户指定的给定点切断 pi。

我已经想出了如何做到这一点,但我无法弄清楚如何摆脱尾随的零。

#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);

该参考指出,这.*意味着“精度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。”

顺便说一句,您可以使用%fprintf 用于双精度数和浮点数,但您仍然必须使用%lfscanf 的双精度数。见这里

于 2013-03-02T04:33:14.187 回答
0

printf("%.3f\n",almost_pi); 会修复它。

于 2013-03-02T04:21:13.487 回答