반응형

제가 자바에서 실수형 그러니간 double 형으로 변수를 정하고 0.5라는 결과는 기대하며 아래와 같이 작성했습니다.

double num = 1/2;

이런 식으로 해서 num을 콘솔에 출력해보니 에잉?? 게 뭡니까??? 0.0이 출력되네요 ㅠㅠ




제가 실수 한게 무엇일까요??
갑자기 옛날에 자바를 처음 배울때 읽었던 한 문장이 생각 났습니다.
자바는 형검사를 엄격히 한다? 물론 관련 없는 생각이었을 수도 있지만 이 문장이 생각나더군요

아무튼 제가 double 형(실수)으로 num이라는 변수를 선언하기는 했지만 그 속에 있는 오퍼레이터 /(나누기)는 1이라는 정수와 2라는 정수를 연산한 것입니다.
즉 정수와 정수를 연산했기 때문에 결과도 정수가 나와야 했던 것입니다. 그래서 결과 값에서 0에 가까운 정수를 결과로 취하게 됩니다.
즉 3/2를 하면 1.0, 5/2를 하면 2.0이 된다는 말이죠.

자바에서 이 문제를 해결하는 방법은 간단합니다. 오퍼레이터 /를 기준으로 양옆의 데이터 중 하나라도 실수형 데이터라는 것을 알려주면 됩니다.
아래 처럼 말이죠.





제가 요즘 파이썬을 공부하느라 데이터 타입에 무심해진건가 하는 생각을 하게 됐습니다.

하지만 제가 지금 고민 하는 것은 분명히 학교에서 배우기를 '정수 나누기 정수는 실수이다' 라고 배웠습니다.
즉 파이썬은 이 내용 그대로를 출력으로 제공하지만 대부분의 언어는 아니라는 사실이죠.

학교의 어떤 교수님께 물었더니 단호히 말씀하십니다.
 "전 파이썬을 싫어해요. 그건 스크립트 언어일 뿐이고, 정수와 정수를 계산한 결과가 실수로 나오는 그건 잘못된 것이에요."

현업에 계신 어떤 전문가분께 물었더니 이렇게 말씀하십니다.
"옛날에는 정수 나누기 정수가 정수라고 해서 크게 문제 될 것이 없었지요. 하지만 '빅데이터'시대에서 데이터 마이닝을 위해서는 파이썬의 방식이 더 좋다고 생각합니다."

예전에 읽었던 컴퓨터에 관한 책에서 본 한마디가 생각납니다.
"인간과 더 가까이!"
컴퓨터의 최종 목적이 인간과 더 가까워지는 것이라고 하더군요. 그렇다면 컴퓨터가 인간과 더 유사하게 동작하기 위해서 이런 사소한 문제부터 해결되어야 하는 것 아닐까요?

중학생에게 물어봐도 1/2은 0.5라고 대답하지 0.0이라고 답하지는 않을테니까요.

반응형

+ Recent posts