我可以使printf格式浮点数像C++流

jsj*_*jsj 6 printf cout

我正在比较两个程序的输出,一个C是另一个C++,使用diff,所以输出必须相同.

是否有任何方法可以printf将它格式化,就好像它是使用打印一样<< mydouble.

我目前正在使用 printf("%g",mydouble)

以下是一些差异的例子:

c: 3.24769e-05 c++: 3.2477e-05
c: 0.0026572   c++: 0.00265721
Run Code Online (Sandbox Code Playgroud)

有趣的是,科学记数法在c中有更多的数字,十进制表示法在c ++中有更多.

Luc*_*ugh 3

您可以使用 C 中的格式说明符来解决此问题。

例如,假设您只想打印小数点后 3 位,则可以将 printf 设置为如下所示:

printf("%.3lf", dub);
Run Code Online (Sandbox Code Playgroud)

输出值double dub = .0137;将是0.014

这将解决第二种情况的问题,如果您想要更精确的打印,您可以编写:

printf("%.8lf", dub);
Run Code Online (Sandbox Code Playgroud)

那么你的输出double dub = 0.00265721;将是0.00265721

%g 的情况与此相同,只是左侧的数字包含在计算中。如果您想要 C++ 版本(我假设精度较低),那么您的代码将如下所示:

double dub = .0000324769;
printf("%.5g", dub);
Run Code Online (Sandbox Code Playgroud)

哪个产量3.2477e-05