C++:关于输出的问题,如何使输出不为指数形式

#include<iostream>
#include <iomanip> 
using namespace std;
int main()
{
    double p, n = 0, m = 0, i = 0, j = -1, x, q;
    double sum = 0;
    int z = 0;
    cin >> p;
    z = (int)p;
    x = p - z;
    while (z > 0)
    {
        m = z % 2;
        z = z / 2;
        sum = sum + m * pow(10, i);
        //n++;//记录整数部分位数
        i++;
    }
    while (x > 0.000000001)//小数点后的精度,整数部分混为一体考虑
    {
        q = (int)(x * 2);
        x = x * 2 - q;
        sum += q * pow(10, j);
        j--;
        n++;//总的位数
    }
    if (n > 16)//double的有效数位16~17位
        n = 16;
    //cout.precision(n);//设置输出精度
    cout << "二进制为:" << setprecision(n) << sum << endl;
}

如果输入:68.3125
输出为:图片说明
如何让此处输出不表示为指数形式

setprecision(n),你的n是0那不行,得是6以上

    cout << "二进制为:" << fixed << setprecision(n) << sum << endl;

这俩搭配使用
setprecision只是n位有效数字
加起来才是保留n位小数(非科学)