直觉上,我会认为长双位数比双位数有更多的小数点,双位数比浮点数有更多的小数点,但是,如果是这样,为什么std::cout会以相同的小数点精度打印出浮点数,双位数和长双位数,即使它们对所有基元数据类型都有重载?
C++源代码:
#include <iostream>
#define PI 3.1415926535897932384626433832;
int main()
{
float f = PI;
double d = PI;
long double ld = PI;
std::cout << f << std::endl;
std::cout << d << std::endl;
std::cout << ld << std::endl;
return 0;
}
输出:
3.14159
3.14159
3.14159
对于所有类型的彩车,只有一个设置。 float,double和long double的精度不能不同。 所有类型的浮点数的默认精度为6。
从技术上讲,不可能为float
和double
设置不同的精度。
std::setprecision
没有重载。 每个std::basic_ostream
只能保存一个精度值。