C ++双重充当float?

时间:2018-09-11 10:13:32

标签: c++ variables floating-point double var

C ++

float f = 0.123456789;
double d = 0.123456789;

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

输出

float = 0.123457
double = 0.123457

为什么?
double long double 的用法?
是否有一个大于 long double 的变量?

1 个答案:

答案 0 :(得分:1)

您看到的并不完全是变量的内容,而是舍入后标准ouptut流输出的内容。从标题<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位有效数字的数字。)