当我声明的所有内容都是双精度形式时,为什么我的输出不是双精度形式?

why is my output not coming in double form, when everything that i've declared is in double form?

#include <iostream>

using namespace std;

int main()
{

    double d = 4, b, e;

    cin >> b;
    e = b + d;

    cout <<e<< endl;
}

为什么我的输出不是双精度形式,而我声明的所有内容都是双精度的? 我已经尝试过对其进行类型转换,但它仍然无法正常工作。 当我给出 4.0 作为输入时,它给出 8 作为输出,但我希望它给出 8.0 作为输出。

没有双重形式。打印需要一种格式,一种结果输出方式的规范,无论你打印什么。

ostreams 确实有一个内部状态来决定给定参数的打印方式。基本上,这些可以通过 input/output 操纵器来控制。有一些可以用来控制浮点数输出。

非详尽列表:

  • std::showpoint (noshowpoint) 打印(或不打印)小数点。

  • std::fixedstd::scientificstd::hexfloatstd::defaultfloat 在几种常用符号中进行选择。

  • std::setprecision(int n) 选择小数点后出现的位数。

默认精度为 6。

默认情况下(如果你没有设置正确的状态),如果你的双精度值(比如 8.0 或 8.5)可以很快打印出来,那么它就会打印 8(或 8.5)。

参见:https://en.cppreference.com/w/cpp/io/manip/setprecision and https://en.cppreference.com/w/cpp/io/manip/fixed