如何在输出一个浮点数时不输出其小数点后多余的零
  • 板块学术版
  • 楼主Forest_
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/12/19 12:13
  • 上次更新2023/10/28 14:06:10
查看原帖
如何在输出一个浮点数时不输出其小数点后多余的零
238768
Forest_楼主2021/12/19 12:13

对于一个double类型的浮点数,怎样不输出后面多余的零?

(试了一下人为控制:

  //printf("%lf",ans);
  int xsd=0;
  while(ans!=floor(ans))
  {
          ans*=10;
          xsd++;
  }
  ll k=(long long)ans;
  int p=0;
  while(k)
  {
      anss[++p]=k%10;
      k/=10;
  }
  p=max(p,xsd+1);
  for(int i=p;i>=1;i--)
  {
      printf("%lld",anss[i]);
      if(i-1==xsd) printf(".");
  }

失败 大概 0.50.5 变成了 0.5000000010.500000001 这样

推测是在十六位有效数字乘以 1010 后第 1717 位的乱码跑了进来,造成错误。

求助应该怎么办

2021/12/19 12:13
加载中...