我试图将浮点数打印到没有小数点的位置,并且我使用了%0.f和%.f,它们给了我相同的结果。它们之间有区别吗?
最佳答案
是的,它们是相同的。
小数点左边的数字是在用空格填充之前要打印的最小位数。
如果该数字以零开头,则还指示该数字应以零而不是空格填充。对于零长度,将不应用填充。打印长度小于零的数字是不可能的,因此永远不会使用附加的填充指示符。
无论哪种情况,都必须打印一些数字,这意味着即使您指示要最小长度为零的浮点数,它也会打印比最小长度更多的数字以显示数字的值。对于您的测试用例,printf("%0.f", 0.0f)
的输出将显示0
,已决定打印多于最小数量的字符以显示该数字。
对于那些使%0.f
与%.0f
混淆的人,请注意一个指定最小位数,另一个指定精度修饰符。
对于浮点数,.
字符的存在指示指定的精度,而右边没有数字的解释为0
。因此%3.0f
和%3.f
是等效的。如果您未在浮动中提供.
,则假定您的浮动已使用.6
有效格式化