Python의 Integer operation (div, mod, //, % 에 관하여)
Integer Operation 중 기본적인 연산은 우리의 예상결과와 다르지 않다.
Int + Int = Int (type : Int)
Int - Int = Int (type : Int)
Int * Int = Int (type : Int)
하지만 신기한 건 Int / Int = Int (type : Float)이 된다. (나머지 없이 몫이 정수라 할 지라도)
나머지 관련 메소드, 연산에 대해 좀 더 알아보자.
보통 많이들 쓰는 연산자인 // 와 %는 실무 코딩에서도 꽤 유용하게 쓰인다.
하지만 // 를 그저 "어떤 수를 다른 수로 나눈 몫" 이라고만 알면 반만 알고 있는 것이다.
또한, %를 그저 "어떤 수를 다른 수로 나누었을 때 나머지" 라고만 알면 이것 또한 반만 알고 있는 것이다.
//의 정확한 의미를 풀어 설명하자면 The floor of a real number a is the largest integer <= A 이다. (여기서 A는 Numerator(즉, 나눠지는 수(분자)이다.)
몫 보다는 floor가 맞는 표현이다.
그렇다면 %는? 바로 Numerator와 divider * floor의 Gap을 메꾸어 주는 녀석이라고 알아야 한다.
이 말은 사실 양수만 놓고보면 그냥 우리가 알던 몫, 나머지와 다를 바 없는 것 같지만 음수가 껴있다면 이야기가 달라진다.
( -13/4의 //값은 -3일 것 같지만 -4이고, %값은 -1이다)
그래서 양수던 음수던 어떤 경우에도 다음 식은 항상 만족한다.
a = b * (a // b) + a % b
a, b가 각각 양수이던 음수이던 항상 위의 식은 만족한다.
Int + Int = Int (type : Int)
Int - Int = Int (type : Int)
Int * Int = Int (type : Int)
하지만 신기한 건 Int / Int = Int (type : Float)이 된다. (나머지 없이 몫이 정수라 할 지라도)
나머지 관련 메소드, 연산에 대해 좀 더 알아보자.
보통 많이들 쓰는 연산자인 // 와 %는 실무 코딩에서도 꽤 유용하게 쓰인다.
하지만 // 를 그저 "어떤 수를 다른 수로 나눈 몫" 이라고만 알면 반만 알고 있는 것이다.
또한, %를 그저 "어떤 수를 다른 수로 나누었을 때 나머지" 라고만 알면 이것 또한 반만 알고 있는 것이다.
//의 정확한 의미를 풀어 설명하자면 The floor of a real number a is the largest integer <= A 이다. (여기서 A는 Numerator(즉, 나눠지는 수(분자)이다.)
몫 보다는 floor가 맞는 표현이다.
그렇다면 %는? 바로 Numerator와 divider * floor의 Gap을 메꾸어 주는 녀석이라고 알아야 한다.
이 말은 사실 양수만 놓고보면 그냥 우리가 알던 몫, 나머지와 다를 바 없는 것 같지만 음수가 껴있다면 이야기가 달라진다.
( -13/4의 //값은 -3일 것 같지만 -4이고, %값은 -1이다)
그래서 양수던 음수던 어떤 경우에도 다음 식은 항상 만족한다.
a = b * (a // b) + a % b
a, b가 각각 양수이던 음수이던 항상 위의 식은 만족한다.
댓글
댓글 쓰기