2014-04-07 6 views
0

값을 서식 지정하는 데 sprintf 함수를 사용하고 있습니다. 내가 말할 때 값은 정수와 소수 값을 의미합니다.하지만이 함수를 사용할 때 십진수 값이 항상 (항상) 서식이 지정되면 반올림합니다. 누군가가 this.I 뒤에있는 이유를 말할 수 있습니까? 다음 코드를 사용하고 있습니다.Sprintf 10 진수 값 반올림

echo sprintf("%010d",(1142.87 * 100))."\n"; //displays wrong value 
echo str_pad((1142.87 * 100), 10, '0', STR_PAD_LEFT); //displays correct value 

내 필요는 10 자리 숫자로 서식을 지정하는 것입니다. 두 번째 것은 저에게 잘 맞습니다.

답변

1

float로 변환 할 때 반올림이 발생했을 수 있습니다. d 대신 입력을 문자열로 처리하는 매개 변수 s을 사용할 수 있으며 숫자는 올바르게 인쇄됩니다.

echo sprintf("%010d",(1142.87 * 100))."\n"; //displays wrong value 
echo sprintf("%010s",(1142.87 * 100))."\n"; //displays correct value