Функция PHP printf и это странное поведение

Я озадачен тем, что означают эти цифры. Мне кажется, что printf дает мне неправильные результаты.

echo printf("%.2f", 1); // 1.004 echo printf("%.3f", 1); // 1.005 echo printf("%.2f", 1.1234); // 1.124 

Прежде всего, кажется, печатает слишком много десятичных знаков, и я понятия не имею, что это за числа. Может кто-то пролить свет на этот вопрос?

Solutions Collecting From Web of "Функция PHP printf и это странное поведение"

Просто. printf() имеет возвращаемое значение, которое является целым числом. И это значение – длина результирующей строки. Таким образом, ваш код выполняет две функции:

  • Во-первых, форматируйте и выводите свою строку с помощью printf()
  • Во-вторых, echo() результат, который является длиной для каждой строки.

Это потому, что вы видите, например, 1.004 для первого случая. Это 1.00 с 4 (и длина строки "1.00"4 )

Если вы намерены распечатать форматированную строку, используйте printf() как есть:

 printf("%.2f", 1); 

Или используйте sprintf() с эхом:

 echo sprintf("%.2f", 1);