【发布时间】:2020-09-10 18:37:15
【问题描述】:
我对 C 完全陌生,我正在尝试完成一项作业。练习是打印 tan(x),其中 x 从 0 递增到 pi/2。
我们需要以 float 和 double 的形式打印它。我写了一个似乎可以工作的程序,但我只打印了浮点数,而我预计是双倍的。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double x;
double pi;
pi = M_PI;
for (x = 0; x<=pi/2; x+= pi/20)
{
printf("x = %lf, tan = %lf\n",x, tan(x));
}
exit(0);
}
我的问题是:
-
为什么我得到浮点数,而我将变量定义为 double 并在 printf 函数中使用 %lf?
-
我需要改变什么才能获得双打作为输出?
【问题讨论】:
-
您没有使用
float。printf()格式%lf用于long double。格式%f用于double,当传递给printf()时,float值将提升为double。float没有格式(与scanf()不同)。如果您想要更多小数位,您可以使用例如%.12f。 -
你得到的输出怎么样让你觉得双打没有被打印出来?
-
我使用了一个在线 C 编译器,我得到的输出有 6 个小数位。我知道双精度有 15 个十进制数字,所以因为我没有看到那么多十进制数字,所以我认为它是一个浮点数。 (geeksforgeeks.org/difference-float-double-c-cpp) 因此,根据我在这里得到的反馈,我现在知道我的输出是双倍的,我可以决定输出的位数。但是如何操作代码以使我的输出采用浮点表示法?
-
没有“浮点表示法”这样的东西。
float和double确实有不同的精度,但这并不能映射到确切的十进制位数。如果你想打印一个多或少的数字,或者固定的数字,或者科学计数法,或者其他修改,你可以改变格式说明符;有关详细信息,请参阅printf的文档。
标签: c floating-point double