问题
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:
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);
来源:https://stackoverflow.com/questions/24304355/php-printf-function-and-its-weird-behaviour