C ++ double充当浮动? [重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

C ++

float f = 0.123456789;
double d = 0.123456789;

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

产量

float = 0.123457
double = 0.123457

为什么? 如何使用双倍和长双? 是否有一个大于长双的变量?

c++ variables floating-point double var
1个回答
1
投票

您所看到的并不完全是变量的内容,而是标准的ouptut流在舍入后输出的内容。从标题std::setprecision中查找<iomanip>函数。

对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位有效数字)。

© www.soinside.com 2019 - 2024. All rights reserved.