我的计划的目标是根据用户的指示在给定点切断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。
请,谢谢!
答案 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);将解决它。