복붙노트

[PYTHON] 부동 소수점 숫자를 가장 가까운 정수로 반올림 하시겠습니까?

PYTHON

부동 소수점 숫자를 가장 가까운 정수로 반올림 하시겠습니까?

제목에서 알 수 있듯이 부동 소수점 숫자를 가져와 가장 가까운 정수로 반올림합니다. 그러나 전체가 아니라면 항상 다음 정수까지 얼마나 가까운 지 상관없이 항상 변수를 반 내림하고 싶습니다. 이것을 할 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.단순한

    단순한

    print int(x)
    

    뿐만 아니라 작동합니다.

  2. ==============================

    2.다음 중 하나가 작동해야합니다.

    다음 중 하나가 작동해야합니다.

    import math
    math.trunc(1.5)
    > 1
    math.trunc(-1.5)
    > -1
    math.floor(1.5)
    > 1
    math.floor(-1.5)
    > -2
    
  3. ==============================

    3.바닥 기능이 필요하다고 생각합니다.

    바닥 기능이 필요하다고 생각합니다.

    math.floor (x)

  4. ==============================

    4.부동 소수점 결과를 얻으려면 다음을 사용하십시오.

    부동 소수점 결과를 얻으려면 다음을 사용하십시오.

    round(x-0.5)
    

    음수에서도 작동합니다.

  5. ==============================

    5.

    x//1
    

    // 연산자는 나누기의 바닥을 반환합니다. 1로 나눈 값은 숫자를 변경하지 않으므로 floor와 같지만 가져 오기는 필요하지 않습니다. 노트: 1) 이것은 float를 반환합니다. 2) 이것은 -∞쪽으로 회전합니다.

  6. ==============================

    6.수학을 가져 오지 않으려면 다음을 사용할 수 있습니다.

    수학을 가져 오지 않으려면 다음을 사용할 수 있습니다.

    int (round (x))

    다음은 문서입니다.

    >>> help(round)
    Help on built-in function round in module __builtin__:
    
    round(...)
        round(number[, ndigits]) -> floating point number
    
        Round a number to a given precision in decimal digits (default 0 digits).
        This always returns a floating point number.  Precision may be negative.
    
  7. ==============================

    7.많은 사람들이 사용한다고 말합니다.

    많은 사람들이 사용한다고 말합니다.

            int(x)
    

    이것은 대부분의 경우에 잘 작동하지만 약간의 문제가 있습니다. OP 결과 :

         x = 1.9999999999999999
    

    그것은에 둥글 것이다

         x = 2
    

    16 일이 지나면 9 라운드가 끝납니다. 당신이 그런 일을 결코 겪지 않을 것이라는 것을 확신한다면 이것은 큰 문제가 아닙니다. 그러나 명심해야 할 것이 있습니다.

  8. ==============================

    8.numpy로 작업하는 경우 음수로도 작동하는 다음 솔루션을 사용할 수 있습니다 (배열에서도 작동 함)

    numpy로 작업하는 경우 음수로도 작동하는 다음 솔루션을 사용할 수 있습니다 (배열에서도 작동 함)

    import numpy as np
    def round_down(num):
        if num < 0:
            return -np.ceil(abs(num))
        else:
            return np.int32(num)
    round_down = np.vectorize(round_down)
    
    round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6])
    > array([-2., -2., -2.,  0.,  1.,  1.,  1.])
    

    numpy 모듈 대신 math 모듈을 사용하는 것이 효과가 있다고 생각합니다.

  9. ==============================

    9.이 문제를 해결했는지 모르겠지만이 질문에 비틀 거리고 있습니다. 소수점을 제거하려면 int (x)를 사용하면 10 진수를 모두 제거합니다. 라운드 (x)를 사용할 필요가 없습니다.

    이 문제를 해결했는지 모르겠지만이 질문에 비틀 거리고 있습니다. 소수점을 제거하려면 int (x)를 사용하면 10 진수를 모두 제거합니다. 라운드 (x)를 사용할 필요가 없습니다.

  10. ==============================

    10.이 코드를 사용하여 숫자에서 0.5를 뺀 다음 반올림 할 때 원래 숫자를 반올림 한 것입니다.

    이 코드를 사용하여 숫자에서 0.5를 뺀 다음 반올림 할 때 원래 숫자를 반올림 한 것입니다.

  11. ==============================

    11.그것은 아주 간단 할지도 모르지만 당신은 1을 뺀 다음 1을 뺀 수는 없습니까? 예 :

    그것은 아주 간단 할지도 모르지만 당신은 1을 뺀 다음 1을 뺀 수는 없습니까? 예 :

    number=1.5
    round(number)-1
    > 1
    
  12. from https://stackoverflow.com/questions/17141979/round-a-floating-point-number-down-to-the-nearest-integer by cc-by-sa and MIT license