Dynami c вывод выделения памяти - PullRequest
1 голос
/ 09 февраля 2020
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?

1 Ответ

2 голосов
/ 09 февраля 2020

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 по умолчанию, и поскольку последнее значение di git не равно нулю, оно будет напечатано.

...