2017-09-30 4 views
1

왜 파이썬 층 나누기 연산자는 다음과 같이 작동합니까? 이 코드 스 니펫을 발견 한 결과 매우 놀랍습니다.파이썬 층 분할 연산자가 왜 이렇게 동작합니까?

a = 1 // 10 
b = -1 // 10 
print a,b 
a= 0 
b=-1 

인쇄 출력 결과 a=0b= -1 얻어진.

a=0b= -1은 왜 발생합니까?

//은 바닥 분할을 수행하므로 항상 반올림됩니다.

+1

예, "바닥"은 "아래로"를 의미합니다. –

+3

우리 나라에서는 바닥이 내려 가고 천장이 위로 올라 있습니다. 우리는 이것을 다른 방법보다 더 편리하다고 생각합니다. ;) –

+1

그것은 표준 수학에서 곧장 나온 것입니다 : floor 연산자는 다음 정수로 내림합니다. 따라서 바닥 (3.9)은 바닥 (3.1)이 3이고 바닥 (-3.9)은 바닥 (-3.1)이 -4 인 것과 같습니다. 이 정의는 컴퓨터 언어 및 라이브러리에서 찾을 수 있습니다. –

답변

2

//은 파이썬에서 "층 나누기"연산자입니다. 즉, 그러한 분단의 결과는 정기적 인 분열 (/ 운영자와 함께 수행) 결과의 바닥입니다.

주어진 숫자의 바닥은이 숫자보다 작은 가장 큰 정수입니다. 예 :

7/2 = 3.5 so 7 // 2 = floor of 3.5 = 3.

음수의 경우 덜 직관적입니다 (-7/2 = -3.5, so -7 // 2 = floor of -3.5 = -4). 마찬가지로 -1 // 10 = floor of -0.1 = -1.

//math.floor()과 동일한 작업을 수행하도록 정의됩니다. 부동 소수점 결과보다 크거나 같은 가장 큰 정수 값을 반환합니다. 0은 -0.1보다 작거나 같지 않습니다.

6

Floor 함수는 x보다 크지 않은 가장 큰 정수를 반환합니다. 예를 들어 입력이 2.25이면 출력은 2.00입니다. -0.1의 경우, -0.1보다 작은 최대 정수는 -1이됩니다.

관련 문제