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 的变量?
答案 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位有效数字的数字。)