2010-06-25 2 views
1
echo 1/3; 

I 출력 0 위를 기대했지만, 사실 PHP는 PHP는 다음과 같이 행동하기 시작 않을 때부터 충분한 출력 0.33333333333333PHP autocast 정수는 언제부터 부동 상태가됩니까?

스마트입니까?

+0

그것은하지 않습니다, 그러나 float로 수학적 표현 (1/3)의 결과를 캐스팅 것 –

+0

질문에 시원한 답이있다 (들), 하나를 받아라! ;) – acm

답변

12

항상 이와 같이 작동합니다. 참조 : http://php.net/manual/en/language.operators.arithmetic.php

분할 연산자 ("/") 정수 (또는 는 정수로 변환되는 문자열) 인 두 개의 피연산자와 숫자 균등하게 나눌하지 않는 한 경우, 부동 소수점 값을 반환 정수 값이 반환됩니다.

+0

'1'이 아니고 '3'이 이미 정수형이 아닙니까? – wamp

+6

@wamp : 예,하지만 1은 3으로 균등하게 나눌 수 없습니다. –

1

PHP는 강력한 형식의 언어가 아닙니다. 그것은 항상 그런 것들을합니다.

내가 아는 한, php는 처음부터 이렇게 설계되었습니다.

+1

처음부터 PHP를 오해 한 것 같습니다 ... – wamp

+0

문자열이 숫자로만 구성된 경우 가장 미친 문제는 문자열에서 정수까지의 자동 캐스팅입니다 ... –

0

나는 이것이 예상 된 행동이라고 말하고 싶습니다.

당신이 정수를 원하는 경우, 캐스트를 강제 :

echo (int)(1/3); 
+0

'1'은'(int) 1'과 같지 않습니까? – wamp

+0

당신이 맞습니다. 나는 아직 깨어 있지 않다. :) –

+0

PHP는 강력한 형식의 언어가 아닙니다. 따라서 1은 '1', 1, 1.00, '1'등이 될 수 있습니다. – Lizard

관련 문제