4

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?

1 Answer 1

5

Simple. printf() has a return value, which is integer. And that value is - length of resulting string. Thus, your code is doing two things:

  • First, format & output your string with printf()
  • Second, 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);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.