파이썬 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 |