C. 四舍五入的结论

C. Conclusion of the rounded double

如何去除四舍五入到第二个符号双倍?我在 C++ 中找到了唯一的选项:

cout<<fixed<<setprecision(2)<<x[i]<<endl;

但在那种情况下,不清楚如何在 C 中将其设为:

printf("%.7hi"x[i]);
printf("    ");

也就是说,没有过渡到下一行,只有 7 个符号。

在 C++ 中,输出流的 precision 属性 的效果取决于流的 floatfield 格式标志的设置。您的 C++ 示例将该标志设置为 fixed,这似乎对应于 printf() 中的 %f 字段描述符。我说 "seems to" 是因为我找不到任何需要精确对应的文档,但我预计在实践中它们确实完全对应。

在 C printf() 格式中,精度是每个输出字段的 属性。它在小数点和转换说明符(此处为f)之间的字段描述符中表示,可能在两者之间带有长度修饰符。假设 xdoublefloat 的数组,因此 C++ 语句的 C 模拟是

printf("%.2f\n", x[i]);

fprintf(stdout, "%.2f\n", x[i]);

(这些是等价的)。然而,它们与 C++ 的不同之处在于,浮点格式和精度不会作为 stdout.

的持久属性保留。