2014-06-19 2 views
4

나는이 숫자들이 의미하는 바를 당황스럽게 생각합니다. 나에게 그것은 printf가 나에게 잘못된 결과를주는 것 같다.PHP printf 함수와 이상한 동작

echo printf("%.2f", 1); 
// 1.004 

echo printf("%.3f", 1); 
// 1.005 

echo printf("%.2f", 1.1234); 
// 1.124 

우선 너무 많은 소수를 인쇄하는 것으로 보이며 그 숫자가 무엇인지 전혀 알지 못합니다. 누군가이 문제에 관해 밝힐 수 있습니까?

답변

4

심플. printf()에는 정수 인 반환 값이 있습니다. 그 값은 결과 문자열의 길이입니다.

  • 첫째, printf()
  • 둘째와 형식 & 출력 할 문자열, echo() 각 문자열의 길이 결과 : 따라서, 귀하의 코드는 다음과 같은 두 가지 작업을하고있다.

예를 들어 1.004이 표시되어 있기 때문입니다.

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

또는 에코와 sprintf()을 사용합니다 :

echo sprintf("%.2f", 1); 
그것은 형식의 문자열을 인쇄하거나 그대로 printf()를 사용하는 41.00 (및 "1.00" 문자열의 길이를 4있다) 당신의 의도가

경우입니다