2013-02-08 8 views
3

내가 특별히 좀 더 PHP 자습서를 통해 DevZone PHP 101을 일하고 있어요,에 의해 혼란 스러워요 :.sprintf ("% 4.2f", value)는 PHP에서 어떻게 작동합니까?

echo .sprintf("%4.2f", (2 * $radius * pi())) 

나는이

나는 수단이 4 개 개의 위치 넓은 부동 소수점 필드를 생산하고 있다고 생각 발견 첫 번째 후속 매개 변수의 값을 사용하여 소수점 두 자리.

이것은 프로그래밍 언어 C/C++ 라인에서 비롯되었습니다. sprintf()는 첫 번째 매개 변수를 format 문으로 사용합니다. %로 시작하는 그 중 아무 것도 필드 지정자입니다. 다른 것은 단지 인쇄 가능한 텍스트입니다. 따라서 모든 텍스트와 지정자를 사용하지 않는 형식 명령문을 사용하면 형식이 정확하게 표시됩니다. 형식 지정자를 사용하려면 작업 할 데이터가 필요합니다.

하지만 몇 가지 다른 값을 시도한 후에도 나는 그것을 얻지 못하고 있습니다. 이 경우에는 그것의 목적은 그냥 넣어 모두 그것의 앞에 4의 포인트는 무엇입니까

.sprintf("%.2f", (2 * $radius * pi())) 

는 2 곳으로 소수점을 제한하는 경우 나에게 보인다? PHP Manual에서는 총 문자 수를 4로 결정하지만 (소문자가 5 문자가 아니기 때문에) 그렇지 않으면 큰 문자로 변경하려고했기 때문에 해당 문자가 5 문자가 아니란 것으로 판단됩니다. 숫자는 % 8.2f와 같고 끝까지 0을 붙이지 않았습니다. 누군가 더 잘 설명해 주시겠습니까?

감사합니다.

답변

7

형식 지정자의 첫 번째 숫자 % .2f는 채우기 길이를 나타냅니다. 기본 sprintf는 공백 문자를 사용합니다.

printf("%20.2f", 1.23); 

윌 예를 들어 리드 :

당신은 더 큰 숫자로 효과를 볼 수 있습니다

수 전에 16 개 공간이있다
   1.23 

. 플로트는 4를 사용하고 채우기 길이는 예를 들어 20으로 설정됩니다.

을 (아마 당신은 .. 이렇게 패딩 공간을 볼 수 없었다, 웹 페이지에 그것을 밖으로 인쇄) 그리고 예를 들어 대체 패딩 문자를 사용하는 sprintf 맨에 더 아래에있다 :

printf("%'*20.2f", 1.23); // use the custom padding character '*' 

가 될 것이다 :

****************1.23 
+0

은''* '대신'*'을 의미합니까? – Ben

+0

감사합니다 Mario, 예, Chrome에서보고 있었기 때문에 어떤 패딩도 볼 수 없었습니다. 빈 패딩을 별표로 바꾸고 지금 이해합니다. – Ryan

+0

벤, 두 가지 방법으로 시도했지만 아포스트로피 없이는 작동하지 않습니다. – Ryan

관련 문제