【问题标题】:C++ double act as float? [duplicate]C ++双重充当浮点数? [复制]
【发布时间】:2018-09-11 10:13:32
【问题描述】:

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的变量?

【问题讨论】:

  • 阅读std::setwstd::fixed等流操作符。
  • 显示的浮点数的位数在std::cout 端配置,不一定取决于表示该值的字节数。
  • 为什么什么?请说明您还期望什么
  • @Eljay,这是一个最佳答案,如果您将其发布为答案,我很好地给您(最佳答案)。非常感谢。

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


【解决方案1】:

您看到的并不是变量的内容,而是标准输出流在四舍五入后输出的内容。从标头&lt;iomanip&gt; 中查找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;

产生输出:

浮点数 = 0.1234567910433

双 = 0.123456789

这表明,就它们可以表示的数字而言,float 和 double 确实不是同一种类型。 (提示:这甚至不是存储在浮点数中的确切数字,只是四舍五入到 13 位有效数字的那一位)。

【讨论】:

  • 谢谢,但是 1- 浮动中 0.12345679 之后的 10433 是什么? 2- 浮点 6 或 9 十进制?
  • 我建议您查找并了解更多关于浮动类型本身的信息,因为您的问题涉及更一般的主题。正如我在问题中提到的,它们无法以精确的方式表示每个实数。
猜你喜欢
  • 1970-01-01
  • 2016-05-10
  • 2012-10-27
  • 2015-10-22
  • 2013-09-13
  • 2015-02-17
  • 2021-10-10
  • 2010-12-19
  • 2013-10-05
相关资源
最近更新 更多