2013-05-06 2 views
-2
MAX=100 
CURRENT=50 

def divide(): 
    global MAX 
    global CURRENT 
    print float((CURRENT/MAX)) 

divide() 

누군가가 왜 이것이 0.0을 인쇄하는지 말해 줄 수 있습니까?지구본이 분할되지 않습니까?

+1

int를 나눈 다음 float로 변환합니다. Make Max = 100.0 – dansalmo

+3

부수적으로'global' 문은 필요 없습니다. 함수 내에서 그 이름에 *를 * 할당하려는 경우에만'global'이 필요합니다. – mgilson

답변

2

정수 (또는 바닥) 구분을 사용하고 있습니다. 대신에 플로트 분할을 사용

print float(CURRENT)/MAX 

또는

from __future__ import division 

print CURRENT/MAX 

파이썬 2 개의 정수 값을 나눈 정수 결과를 초래한다. 50 번에 100 번만 입력하면 결과가 정수 0이되며, float으로 캐스팅됩니다.

파이썬 3에서

, 또는 from __future__ import division를 사용하여 / 운영자 항상 부동 사용합니다 포인트 부문, 대신 당신에게 바닥 부문을 제공 //가 추가 된 새로운 연산자.

1

다이빙 정수입니다. 그런 다음이를 부동으로 변환합니다. CURRENT/MAX는 0입니다. float (0)은 0.0

다음은 원하는 결과를 제공합니다.

float(CURRENT)/MAX 

또는

CURRENT/float(MAX) 

는 다른 방법으로는 수레에 전역 변수를 수정할 수 있습니다.

관련 문제