我试图在我的程序中使用long double类型来打印出pi的更多数字。但它只显示5位十进制数字。无法打印pi的更多小数
这是我的代码。
int main(int argc, char** argv) {
long double pi_18 = acos(static_cast<long double>(-1));
cout << "pi to 18:" << pi_18 << endl;
return 0;
}
,这是我的输出:
pi to 18: 3.14159
我怎样才能解决这个问题?
ACOS()接受双并返回一个double所以即使您在输入和输出转换成长双倍你永远不会超出双精度,因为输入被截断为双精度,输出是双精度值的长双精度的转换,请使用acosl()而不是 – woggio
@ user2318607 - 如果'acos'为'std :: acos' from''它超载,'acos((-1)'返回long double,但函数调用最好写成'aces(1.0L)'。 –