我想执行一些计算,我希望结果正确到小数点后,比如 12。所以我写了一个示例:
#define PI 3.1415926535897932384626433832795028841971693993751
double d, k, h;
k = 999999/(2*PI);
h = 999999;
d = PI*k*k*h;
printf("%.12f\n", d);
但它给出了输出:
79577232813771760.000000000000
我什至使用了 setprecision(),但答案相同,而不是指数形式。
cout<<setprecision(12)<<d<<endl;
印刷
7.95772328138e+16
也使用了long double,但徒劳无功。
现在除了将整数部分和小数部分分别存储在 long long int 类型中之外,还有其他方法吗?
如果是这样,可以做些什么来准确地得到答案?