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
)之间的字段描述符中表示,可能在两者之间带有长度修饰符。假设 x
是 double
或 float
的数组,因此 C++ 语句的 C 模拟是
printf("%.2f\n", x[i]);
或
fprintf(stdout, "%.2f\n", x[i]);
(这些是等价的)。然而,它们与 C++ 的不同之处在于,浮点格式和精度不会作为 stdout
.
的持久属性保留。
如何去除四舍五入到第二个符号双倍?我在 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
)之间的字段描述符中表示,可能在两者之间带有长度修饰符。假设 x
是 double
或 float
的数组,因此 C++ 语句的 C 模拟是
printf("%.2f\n", x[i]);
或
fprintf(stdout, "%.2f\n", x[i]);
(这些是等价的)。然而,它们与 C++ 的不同之处在于,浮点格式和精度不会作为 stdout
.