打印浮点数,使指数标记为"*10 ^"而不是"e"

ale*_*lex 4 c c++ floating-point representation

我正在寻找一种在C/C++中打印浮点(或双倍)f的可能性f = 1.234e-15,比如打印为

  • f = 1.234*10^-15,或者,甚至更好,作为
  • f = 1.234*10^{-15}

谁能帮我?也许有一种方法可以在基数10中获得指数"-15"和尾数"1.234".我发现了一个问题,我如何提取双尾数的尾数,但不幸的是,这并没有真正帮助,因为它只得到尾数在基地2.

das*_*ght 8

您可以string使用输出字符串流打印到a ,然后替换"e""*10^".

ostringstream ss;
ss << scientific << 123456789.87654321;
string s = ss.str();
s.replace(s.find("e"), 1, "*10^");
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)

这个片段产生

1.234568*10^+08
Run Code Online (Sandbox Code Playgroud)