我想打印一个双精度值到std::cout
(GCC,clang,MSVC++),使得输出在所有平台上都是相同的。双指数到C++ iostreams的便携式打印
我对指数的格式有问题。 下面的程序
#include <iostream>
int main()
{
std::cout << 0.1e-7 << std::endl;
return 0;
}
有此输出与GCC:
1e-08
,并与MSVC
1e-008
以下输出怎样才能让这两个输出相同?
对不起,如果这是一个愚蠢的问题,但我到目前为止还没有找到答案。 所有格式似乎演变围绕前尾数一切的格式...
编辑:GCC的输出1e-08
没有1e-8
(原先规定),所以它是符合。对困惑感到抱歉。
编辑2:实际上在Dietmar的评论后,将“尾数”改名为“指数”。 There also is a section on Wikipedia on mantissa vs. significant。
你有没有看[操纵](http://www.cplusplus.com/reference/iostream/manipulators/)? – razlebe 2012-02-10 10:40:11
@razlebe:我找不到使用操纵器的答案。 – Manuel 2012-02-10 12:16:51
我发现GCC不一致,因为它打印出1.e-08和1.e-18(两位数字),但它打印出1.e-256(三位数字)。我找不到解决此问题的流库(我尝试使用iostream和Boost.Format)。因此,如果想要固定宽度双打,需要为指数的可能的第三位保留余量空间。 – alfC 2017-02-24 04:30:45