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.0
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);