source

파이썬 3에서 int()와 floor()의 차이점은 무엇입니까?

manysource 2023. 5. 5. 09:55

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