【问题标题】:why is my output not coming in double form, when everything that i've declared is in double form? [duplicate]当我声明的所有内容都是双重形式时,为什么我的输出不是双重形式? [复制]
【发布时间】:2021-05-20 08:27:26
【问题描述】:
#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 作为输出。

【问题讨论】:

  • 什么是“双重形式”?你能举例说明你现在得到什么以及你期望得到什么吗?
  • 您在期待什么,结果如何?
  • 使用:std::setprecision:
  • 我的猜测是 OP 的意思是:Where and How to format a C++ code to 2 decimal places。他们想要5.0 形式的结果,但输出是5
  • 当我输入 4.0 时,输出即将到来 8

标签: c++ coding-style


【解决方案1】:

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

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

非详尽列表:

  • 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/setprecisionhttps://en.cppreference.com/w/cpp/io/manip/fixed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多