将双精度打印到字符串流时如何避免“指数”格式

Posted

技术标签:

【中文标题】将双精度打印到字符串流时如何避免“指数”格式【英文标题】:how to avoid "exponent" format when printing double to stringstream 【发布时间】:2014-06-08 21:10:01 【问题描述】:

我以这种方式将 double 打印到 stringstream::

std::stringstream message;
message << sss[j]->stocks << '/' << std::setprecision(5) << sss[j]->profit << '/' << sss[j]->lastPrice;
std::cout << std::setw(30) << message.str();

sss[j]-&gt;profit 是双倍的。我希望它打印“没有 E”,但在输出中我仍然有这样的东西:

-560000/4.076e+005/0.7394

如何避免e

【问题讨论】:

更改format。 通过阅读relevant pages of the manual How to keep doubles from converting to scientific notation when using and stringStream 的完全相同的副本 【参考方案1】:

使用std::fixed

std::cout << std::fixed << sss[j]->stocks << std::endl;

顺便说一句,“e”来自所谓的科学符号。

【讨论】:

以上是关于将双精度打印到字符串流时如何避免“指数”格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将双精度值格式化为点后两位小数且分隔符为千位的字符串?

函数将双精度值格式化为字符串

将双精度转换为双精度,带一位小数和一位小数?

Java:将双精度数转换为字符串

如何防止 PHP SoapClient 将双精度值转换为科学计数法?

如何将双精度数更改为字符串