用long double的时候为什么会输出一串意想不到的数的原因是:
在一般的编译器上,long double 是10个字节,而double是8个字节的。
你程序在计算的过程中,并没有什么数据溢出而且也没有丢失精度,
而是在最后的printf("pi=%10.6f\n",pi);把long double强制修改成了double;
用printf("pi=%10.6lf\n",pi);也是把long double强制修改成了double;
如果使用c++中cout的话,那么就不会把long double强制修改成了double,而会输出正确的数据。
在一般的编译器上,long double 是10个字节,而double是8个字节的。
你程序在计算的过程中,并没有什么数据溢出而且也没有丢失精度,
而是在最后的printf("pi=%10.6f\n",pi);把long double强制修改成了double;
用printf("pi=%10.6lf\n",pi);也是把long double强制修改成了double;
如果使用c++中cout的话,那么就不会把long double强制修改成了double,而会输出正确的数据。
你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题