我使用diff
比较两个程序的输出,一个C是另一个C ++,所以输出必须相同。
有没有办法让printf
加倍,以便将其格式化为使用<< mydouble
进行打印。
我目前正在使用printf("%g",mydouble)
以下是一些差异的例子:
c: 3.24769e-05 c++: 3.2477e-05
c: 0.0026572 c++: 0.00265721
有趣的是,科学记数法在c中有更多的数字,十进制表示法在c ++中有更多。
答案 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