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

时间:2014-01-13 06:12:39

标签: printf cout

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

有没有办法让printf加倍,以便将其格式化为使用<< mydouble进行打印。

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

以下是一些差异的例子:

c: 3.24769e-05 c++: 3.2477e-05
c: 0.0026572   c++: 0.00265721

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

1 个答案:

答案 0 :(得分:3)

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

例如,假设您想在小数点后打印出3个位置,您可以像这样制作printf:

printf("%.3lf", dub);

如果值为double dub = .0137;,则输出为0.014

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

printf("%.8lf", dub);

double dub = 0.00265721;的输出将为0.00265721

%g的情况以相同的方式工作,除了左边的数字包含在计算中。如果您想要C ++版本(我假设的精度较低),那么您的代码将如下所示:

double dub = .0000324769;
printf("%.5g", dub);

产生3.2477e-05