【发布时间】:2014-07-21 04:27:45
【问题描述】:
我想将double 值打印成不超过 8 个字符的字符串。打印的数字应该有尽可能多的数字,例如
5.259675
48920568
8.514e-6
-9.4e-12
我尝试了 C++ iostreams 和 printf-style,但都没有以我希望的方式尊重提供的大小:
cout << setw(8) << 1.0 / 17777.0 << endl;
printf( "%8g\n", 1.0 / 17777.0 );
给予:
5.62525e-005
5.62525e-005
我知道我可以指定一个精度,但我必须在这里提供一个非常小的精度,以涵盖最坏的情况。任何想法如何在不牺牲太多精度的情况下强制执行精确的字段宽度?我需要这个来打印矩阵。我真的必须想出自己的转换函数吗?
5 年前有人问过类似的问题:Convert double to String with fixed width,但没有令人满意的答案。我当然希望在此期间取得一些进展。
【问题讨论】:
-
你试过
boost::format吗? -
不确定我是否理解。如果双精度值恰好是 100000000 怎么办?输出应该是“99999999”吗?
-
C++ 的所有新特性都与此无关。这不是大多数人认为的“进步”。
-
@ChristianHackl:您是否错过了使用科学计数法的示例输出?
-
@BenVoigt:是的,我明白了。我误解了这个问题,对不起。
标签: c++ formatting