c++ - 动态内存分配输出
问题描述
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
?
解决方案
29494.99
29495.0
出于cout <<
某种目的而四舍五入,因为默认情况下cout
打印数字时使用的有效数字的默认数量是6
,并且末尾的零默认情况下不打印。
您可以使用std::setprecision
来更改输出精度(需要#include <iomanip>
):
cout << setprecision(7) << "Value of pvalue : " << *pvalue << endl;
打印29494.99
。
29494.4344
默认情况下四舍五入29494.4
,由于最后一位不是零,因此将被打印。