我将变量定义为long double
以使用数字PI
的最大精度,但是当程序被激活时,变量的值变为3.141592653589793116
并且失去了一些精度。
我检查了变量的大小,它与double的大小相同,因此就像double一样。
我有存储此值的问题,而不是用于打印。现在,我如何以完全精确的方式使用long double
?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
//number PI
long double pi = 3.14159265358979323846264338327950;
int sz1 = sizeof(long double);
int sz2 = sizeof(pi);
cout << sz1 << endl;
cout << sz2 << endl;
printf_s("%.20f\n", pi);
cout << setprecision(20) << pi;
return 0;
}
//结果:
8
8
3.141592653589793116
3.141592653589793116