首页 > 解决方案 > 动态内存分配输出

问题描述

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

解决方案


29494.9929495.0出于cout <<某种目的而四舍五入,因为默认情况下cout打印数字时使用的有效数字的默认数量是6,并且末尾的零默认情况下不打印。

您可以使用std::setprecision来更改输出精度(需要#include <iomanip>):

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

打印29494.99


29494.4344默认情况下四舍五入29494.4,由于最后一位不是零,因此将被打印。


推荐阅读