如何自动摆脱尾随零?

时间:2013-03-02 04:12:16

标签: c

我的计划的目标是根据用户的指示在给定点切断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。

请,谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您需要指定格式参数(长度)作为printf的附加参数:

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

This reference表示.*表示“未在格式字符串中指定精度,而是在必须格式化的参数之前的附加整数值参数。”

顺便说一句,你可以使用%f同时使用printf的双打和浮点数,但是你仍然需要使用%lf与scanf进行双打。请参阅here

答案 2 :(得分:0)

的printf( “%3f中\ n” 个,almost_pi);将解决它。