This question already has answers here:
How do I print a double value with full precision using cout?
(16 个回答)
去年关闭。
直觉上,我认为 long doubles 的小数位数比 doubles 多,doubles 的小数位数比浮点数多,但是,如果是这样,为什么 std::cout 以相同的小数精度打印浮点数、 double 数和长 double 数,即使它们是有所有原始数据类型的重载吗?
C++源代码:
(16 个回答)
去年关闭。
直觉上,我认为 long doubles 的小数位数比 doubles 多,doubles 的小数位数比浮点数多,但是,如果是这样,为什么 std::cout 以相同的小数精度打印浮点数、 double 数和长 double 数,即使它们是有所有原始数据类型的重载吗?
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
只能保存一个精度值。
关于c++ - 为什么 std::cout 将浮点数、 double 数和长 double 数打印为相同的十进制精度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62537487/