【发布时间】:2021-07-26 00:58:43
【问题描述】:
printf("%Lf", long double) 将输出截断为double。或者,我做错了什么?
Gcc 9.3.0 Ubuntu 20.04.2,Linux 5.8.0-59-generic
printf("print m_pi %.45f\n", M_PI);
printf("print m_pil %.45LF\n", M_PIl);
printf("maple Pi 3.141592653589793238462643383279502884197\n");
printf("m_pil def 3.141592653589793238462643383279502884L\n");
输出:
print m_pi 3.141592653589793115997963468544185161590576172
print m_pil 3.141592653589793238512808959406186204432742670
maple Pi 3.141592653589793238462643383279502884197
m_pil def 3.141592653589793238462643383279502884L
似乎 gcc printf 正在将 long double 截断为 13 位 +-。
【问题讨论】:
-
M_PIl是如何定义的? -
在 math.h 中,它包含在 cmath 中。 3.141592653589793238462643383279502884L
-
看'man printf',f和F是一样的,只是F是大写的。
标签: gcc floating-point printf precision long-double