파이썬 3에서 int()와 floor()의 차이점은 무엇입니까?
파이썬 2에서,floor()
float 값을 반환했습니다.제가 보기에는 분명하지 않지만, 저는 왜 그것이 유용할 수 있는지를 명확히 하는 몇 가지 설명을 찾았습니다.floor()
리턴 플로트(같은 경우)float('inf')
그리고.float('nan')
).
그러나 파이썬 3에서는floor()
정수를 반환합니다(앞에서 언급한 특수한 경우에 대한 오버플로 오류를 반환합니다).
그렇다면, 만약 있다면, 사이의 차이점은 무엇입니까?int()
그리고.floor()
지금?
floor()
반올림하여 int()
자르기.음수를 사용하면 차이가 명확해집니다.
>>> import math
>>> math.floor(-3.5)
-4
>>> int(-3.5)
-3
음수를 반올림하면 0에서 멀어지고 잘리면 0에 가까워집니다.
다르게 말하면,floor()
항상 원본보다 낮거나 같습니다. int()
0에 가깝거나 같을 것입니다.
두 방법의 시간 복잡도를 테스트해 봤는데, 모두 동일합니다.
from time import time
import math
import random
r = 10000000
def floorTimeFunction():
for i in range(r):
math.floor(random.randint(-100,100))
def intTimeFunction():
for i in range(r):
int(random.randint(-100,100))
t0 = time()
floorTimeFunction()
t1 = time()
intTimeFunction()
t2 = time()
print('function floor takes %f' %(t1-t0))
print('function int takes %f' %(t2-t1))
출력:
# function floor takes 11.841985
# function int takes 11.841325
반올림은 여러 가지 방법으로 수행될 수 있으며, 일부 방법은 동일합니다(예: 내장).int
,numpy.trunc
그리고.numpy.fix
숫자를 잘라냅니다. 즉, 음수의 경우 인수보다 큰 결과를 반환합니다. floor
는 다르며 부호에 관계없이 실제로 다음 더 작은 정수를 반환합니다.헷갈릴 수 있습니다.다음은 기본 제공 연산자와 numpy 연산자를 요약한 것입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ROUNDING -2.8 -2.5 -2.2 2.2 2.5 2.8
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
floor -3 -3 -3 2 2 2
rint -3 -2 -2 2 2 3
round (0) -3 -2 -2 2 2 3
fix -2 -2 -2 2 2 2
(int) -2 -2 -2 2 2 2
trunc -2 -2 -2 2 2 2
ceil -2 -2 -2 3 3 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
내가 이 방법을 썼는데, 나를 위한 속임수가 있습니까?
def rightInteger(numa, numb):
result = numa/numb
next_int = math.ceil(result)
difference = next_int -result
if(difference <=0.5):
return next_int
else:
return math.floor(result)
언급URL : https://stackoverflow.com/questions/31036098/what-is-the-difference-between-int-and-floor-in-python-3
'source' 카테고리의 다른 글
명령줄에서 Node.js 버전을 선택하시겠습니까?(REPL이 아님) (0) | 2023.05.10 |
---|---|
WPF 창이 어떤 모니터에 있는지 어떻게 알 수 있습니까? (0) | 2023.05.05 |
내부 vs.개인 액세스 수정자 (0) | 2023.05.05 |
내 파일을 무시하는 gitignore 규칙 설명 (0) | 2023.05.05 |
기록에 보관하지 않고 명령 실행 (0) | 2023.05.05 |