将double转换为具有超过5位十进制数字精度的字符串

时间:2012-10-04 14:08:25

标签: c++ string double type-conversion precision

起初我使用了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 ++如何表示浮动和双倍,这是否太过要求了?

1 个答案:

答案 0 :(得分:2)

ss << setprecision(12) << 3.14159265359;

此外,使用流和C printf / scanf系列之间的选择与GUI与控制台无关。 ostringstream的C等效值为sprintf