Sherry5264
Sherry5264
2020-03-13 21:07
采纳率: 50%
浏览 539

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
输出为:图片说明
如何让此处输出不表示为指数形式

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
    已采纳

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

    点赞 评论
  • xuanhuangwendao
    玄黄问道 2020-03-14 02:20
        cout << "二进制为:" << fixed << setprecision(n) << sum << endl;
    

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

    点赞 评论

相关推荐