C++中科学计数法输出浮点数怎样对齐小数点

程序计算结果是两个浮点数a和b,b是a的误差范围,也就是需要表示成a±b的形式,由于a和b都远小于1所以用科学计数法输出。
问题是怎样处理才能移动b的小数点位置,使b的整数位跟a保持一致?
比如结果为 a = 9.168e-3 b = 2.214e-5
怎样才能输出成 9.168±0.022 e-3 的形式呢?

第1个回答  2012-11-09
考虑格式化的输出就可以拉
第2个回答  2012-11-09
  int CountNeg(float a)
  {
  int n = 0;
  while((a = a * 10) < 10)
   ++n;
  return n;
  }
  
  void EOut(float a, float b)
  {
  if (a < b)
   return;
  int na = CountNeg(a);
  int nb = CountNeg(b);
  for(int i = 0; i < na; i++)
   a *= 10;
  for(int i = 0; i < nb - na; i++)
   b *= 10;
  printf("%f±%fE%d", a, b, na * -1);
  }

  int main()
  {
  float a = 9.168e-3, b = 2.214e-5;
  EOut(a, b);
  return 0;
  }
  本回答被提问者和网友采纳
相似回答