【发布时间】:2014-02-05 14:35:52
【问题描述】:
我正在生成一个用作 FORTRAN 输入文件的文本文件。 FORTRAN 程序指定它读取的值必须采用这样的格式
1.0
必须打印为
0.1000000E+01
到目前为止,我使用 iostream 最接近的是
1.000000E+00
用代码
cout << setprecision(6) << fixed << scientific << uppercase;
_set_output_format(_TWO_DIGIT_EXPONENT);
cout << 1.0 << endl;
有谁知道如上所示获得前导零的最佳方法,最好使用 ostream 而不是 printf?
【问题讨论】:
-
如果我必须迂腐,你的 FORTRAN 代码需要的不是科学记数法。
-
没错……但这是总结问题的最简单方法
-
我担心你将不得不自己编写一个函数,因为那是非标准的,不幸的是。也许修补 FORTRAN 程序可能更简单?或者那不是一个选择?
-
如果我必须学究,
1.000000E+01和0.100000E+01是两个不同的数字。应该是1.000000E+00?我的意思是,如果你的代码cout << 1 << endl;放入1.000000E+01,就会发生一些有趣的事情。 -
此外,您的代码将只输出
1,因为cout << 1 << endl;将使用operator<<(int)而不是float。cout << 2.0 << endl;这给出了2.000000E+00。为了这个问题,你真的运行了这段代码还是只是编造了一个例子,哈哈?
标签: c++ c visual-c++ iostream exponential