Reputation: 2214
I'm baffled what these numbers mean. To me it seems that printf gives me wrong results.
echo printf("%.2f", 1);
// 1.004
echo printf("%.3f", 1);
// 1.005
echo printf("%.2f", 1.1234);
// 1.124
First of all it seems to print too many decimals and I have no idea what those numbers are. Can someone shed some light on this matter?
Upvotes: 4
Views: 471
Reputation: 37365
Simple. printf()
has a return value, which is integer. And that value is - length of resulting string. Thus, your code is doing two things:
printf()
echo()
the result, which is the length for each string.That is because you see 1.004
for first case, for example. It's 1.00
with 4
(and length of "1.00"
string is 4
)
If your intention is to print formatted string, either use printf()
as it is:
printf("%.2f", 1);
Or use sprintf()
with echo:
echo sprintf("%.2f", 1);
Upvotes: 5