直觉上我会认为 long double 比 double 有更多的小数位,double 比 float 有更多的小数位,但是,如果真是这样,为什么 std::cout 在输出时打印出浮点数(floats)、双精度浮点数(doubles)和长双精度浮点数(long doubles)时,它们的小数位数相同,即使它们有所有基本数据类型的重载?
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
std::numeric_limits
中得到处理了。事实上,这种假设的实现甚至可以使用std::numeric_limits
! - Arthur Tacca