C++ 双重充当浮点数?

C++ double act as float?

C++

float f = 0.123456789;
double d = 0.123456789;

cout << "float = " << f << endl;
cout << "double = " << d << endl;

输出

float = 0.123457
double = 0.123457

为什么?
如何使用doublelong double?
有没有比long double大的变量?

您看到的并不是变量的内容,而是四舍五入后标准输出流输出的内容。从 header <iomanip>.

中查找 std::setprecision 函数

Coliru 快速测试:

float f = 0.123456789;
double d = 0.123456789;

std::cout << "float = " << std::setprecision(13) << f << std::endl;
std::cout << "double = " << std::setprecision(13) << d << std::endl;

产生输出:

float = 0.1234567910433

double = 0.123456789

事实证明,float 和 double 在表示数字方面确实不是同一种类型。 (提示:这甚至不是存储在浮点数中的确切数字,只是四舍五入到 13 位有效数字的数字)。