起初我使用了boost lexical_cast
来执行此操作。但由于C ++表示双精度/浮点数的方式,当我将5.1
转换为字符串时,它会给我5.0999999
或某种程度的东西。所以,我这样转换了它:
stringstream ss;
ss << 3.14159265359;
cout << ss.str();
但这只会给我3.14159
,我想要更精确。我想我看到了printf()
能够做到这一点的一些事情,但我实际上是在开发一个Windows GUI程序,而不是输出到控制台。如何获得超过5位小数的精度?我愿意满足8,但10或11会很好。考虑到C ++如何表示浮动和双倍,这是否太过要求了?
答案 0 :(得分:2)
ss << setprecision(12) << 3.14159265359;
此外,使用流和C printf
/ scanf
系列之间的选择与GUI与控制台无关。 ostringstream
的C等效值为sprintf
。