【问题标题】:Dynamic memory allocation output动态内存分配输出
【发布时间】:2020-02-09 17:46:55
【问题描述】:
int main () {
    double* pvalue  = NULL; // Pointer initialized with null

    pvalue  = new double;   // Request memory for the variable

    *pvalue = 29494.99;     // Store value at allocated address

    cout << "Value of pvalue : " << *pvalue << endl;

    delete pvalue;         // free up the memory.

    return 0;
}

输出:

29495

为什么输出是29495

当我将值更改为29494.4344 时,为什么输出29494.4

【问题讨论】:

  • 在没有动态分配的情况下你会得到完全相同的行为——它与值的存储位置完全无关

标签: c++ dynamic-memory-allocation


【解决方案1】:

29494.99 被舍入到 29495.0 以达到 cout &lt;&lt; 的目的,因为 cout 用于打印数字的默认有效位数是 6,并且默认情况下不打印末尾的零。

您可以使用std::setprecision 更改输出精度(需要#include &lt;iomanip&gt;):

cout << setprecision(7) << "Value of pvalue : " << *pvalue << endl;

打印29494.99


29494.4344 默认舍入为29494.4,因为最后一位不是零,所以会被打印出来。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2013-07-01
    相关资源
    最近更新 更多