我试图将浮点数打印到没有小数点的位置,并且我使用了%0.f和%.f,它们给了我相同的结果。它们之间有区别吗?

最佳答案

是的,它们是相同的。

小数点左边的数字是在用空格填充之前要打印的最小位数。

如果该数字以零开头,则还指示该数字应以零而不是空格填充。对于零长度,将不应用填充。打印长度小于零的数字是不可能的,因此永远不会使用附加的填充指示符。

无论哪种情况,都必须打印一些数字,这意味着即使您指示要最小长度为零的浮点数,它也会打印比最小长度更多的数字以显示数字的值。对于您的测试用例,printf("%0.f", 0.0f)的输出将显示0,已决定打印多于最小数量的字符以显示该数字。

对于那些使%0.f%.0f混淆的人,请注意一个指定最小位数,另一个指定精度修饰符。

对于浮点数,.字符的存在指示指定的精度,而右边没有数字的解释为0。因此%3.0f%3.f是等效的。如果您未在浮动中提供.,则假定您的浮动已使用.6有效格式化

08-19 13:35