#php #integer #printf
#php #целое число #printf
Вопрос:
Я сбит с толку, что означают эти цифры. Мне кажется, что printf дает мне неправильные результаты.
echo printf("%.2f", 1);
// 1.004
echo printf("%.3f", 1);
// 1.005
echo printf("%.2f", 1.1234);
// 1.124
Прежде всего, кажется, что печатается слишком много десятичных знаков, и я понятия не имею, что это за числа. Может кто-нибудь пролить свет на этот вопрос?
Ответ №1:
Просто. printf()
имеет возвращаемое значение, которое является целым числом. И это значение — длина результирующей строки. Таким образом, ваш код выполняет две вещи:
- Сначала отформатируйте и выведите свою строку с помощью
printf()
- Во-вторых,
echo()
результат, который является длиной для каждой строки.
Это потому, что вы видите 1.004
, например, для первого случая. Это 1.00
с 4
(и длина "1.00"
строки равна 4
)
Если вы намерены распечатать форматированную строку, либо используйте printf()
как есть:
printf("%.2f", 1);
Или использовать sprintf()
с echo:
echo sprintf("%.2f", 1);