std::cout
。希望在所有平台上输出都相同。我遇到了指数格式的问题。 以下是代码:
#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的提醒,实际上将“尾数”重命名为“指数”。维基百科上也有一节关于尾数与有效数字的区别。
1.e-08
和1.e-18
(两位数字),但是它打印1.e-256
(三位数字)。我找不到一个流库来解决这个问题(当然我试过iostream和Boost.Format)。所以如果想要固定宽度的双精度浮点数,就需要为指数可能出现的第三个数字预留额外的空间。 - alfC