>>> -9 / 5
-2
------------------------------------------
왜 몫으로 마이너스 2가 나오는거지?
-9 1
---- X -----
1 5
내가 알기론 피젯수가 음수라도 단순히 나누기 해서 몫이 음수로 나오는 걸로 알고 있는데
왜 -1이 아니라 -2가 나오는거지?
내가 산수를 잘 못해서 말이야
진지하게 물어보는거야
>>> -9 / 5
-2
------------------------------------------
왜 몫으로 마이너스 2가 나오는거지?
-9 1
---- X -----
1 5
내가 알기론 피젯수가 음수라도 단순히 나누기 해서 몫이 음수로 나오는 걸로 알고 있는데
왜 -1이 아니라 -2가 나오는거지?
내가 산수를 잘 못해서 말이야
진지하게 물어보는거야
응 그건 아마도 -9 / 5 = -1.8 인데 음수에 대해서 반올림을 한 결과가 -2.0 이라서 그런게 아닐까?
ㄴ 아니 이건 그저 몫만 추려내는 기능이야./ 책에서는 나머지가 1이므로 -2가 된다고 하는데 무슨 의미인지를 모르겠다.
열혈강의 파이썬 책... 초장부터 이상하다... 자바에서도 저런 결과 나오려나?
응 반올림 안하면 소수점 이하는 floor 처리하나보네. -1.8 보다 작으면서 가장 큰 음의 정수는 -2 야
ㄴ 아니지... 이건 몫만을 나타내는거라서 1이 되어야지... 반올림은 없다. 책에서는 나머지가 1이므로 -2가 된다고 나와있다.... 자바로 계산 해보려 해도 이클립스로 하니 실행이 안되네... 다른 언어에서도 결과가 이렇게 나오는가?
응 아마 Java 에서 System.out.println(Math.floor(-9 / 5)); 를 하면 똑같은 결과를 얻을 수 있을꺼야. 그냥 -9 / 5 하면 아마 -1 이 나오겠지. Python 언어 스펙 안봤지만 거기서 이렇게 정의하고 있다면 그런 걸꺼야.
찾아보니까 Plain or long integer division yields an integer of the same type; the result is that of mathematical division with the ‘floor’ function applied to the result. 라고 나와. 원래 이렇게 만들어져 있는거래.
https://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations
덕분에 나도 모르던 걸 확실하게 알게 됐어. 고마워.
math.floor(-9/5) = 1이다...
math.floor(-9/5.0) = 2이고...
반 귀도새끼가 그냥 그렇게 만들엇다. 루비도 마찬가지라는것 같다.
http://stackoverflow.com/questions/19517868/integer-division-by-negative-number
아.. 몫이 1이 아니라 -1
-9/5 를 했는데 -2가 나왔다고...
그래 파이썬에선 피제수가 자동으로 실수형으로 캐스팅되고, 피제수가 음수인 경우엔 반올림까지 시켜준다고
파이썬 책에서 나누기 연산자 / 를 하면 몫만 추려서 출력해준다고 나와 있어서 말이야. 스크립트 창에서 -9 / 5 를 했을뿐이고... 몫은 -2가 나왔을 뿐이고.. 책 설명에서는 나머지가 1이라서 그런거라고 할 뿐이고
응 그럼 책이 잘못한거야
그건 책 쓴새끼한테 따져;; 언어 만든놈이 저렇게 동작한다고 해명까지 했는데 뭘 더 어쩌라고
113/// 아니.. 책에서는 나머지가 1이라서 그렇다고 나와 있어... 이 부분이 이해가 안간단 말이야 9/5 라고 양수로 나누어보면 몫이 1로 나와. 음수로 한다고 자동으로 실수형으로 캐스팅되어 피제수가 음수인 경우 반올림깢 ㅣ시켜주던 말던 일단 나누기 연산자는 반올림 없이 몫만 출력해주는걸로 알고 있는데
http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html
if one of the operands is negative, the result is floored.
그럼 각종 공학 식을 넣어서 저렇게 분자 부분이 음수로 될 경우에는 계산상 오류가 난다는거지? 그럼 그냥 자바를 배우는 수 밖에 없나?
응 니가 아는 나누기 연산이랑 파이썬에서의 나누기 연산은 다르다고 몇번을 말해야됨?
일반적으로 인수로 분모에 -값이 들어가는 경우는 흔치 않겠지만...
그럼 자바를 배우는게 답이냐?
자바를 배우는게 답이겠냐? 아님 니가 원하는 나누기 연산을 지원하는 파이썬 수학 라이브러리를 갖다쓰는게 답이겠냐? 그건 니가 판단할 일
파이썬 3.x 버전부터는 일반적인 나누기연산으로 바뀐 모양이다
ㄴ 만약 저걸 모르고 썼었어봐. 백퍼 엉뚱한 결과값이 나오게 되고 아무리 디버깅 해도 결국은 못찾게 되는거지. 왜이리 거지 같게 해놨냐 이거야 나누기 연산자인 "/" 이것을 말이야.
답은 "Go"다