더북(TheBook)

Q. 실수에서 15자리 숫자면 나에게는 충분해 보인다. 실수의 정밀도에 대해 신경 써야 하는가?

A. 신경 써야 한다. 사람은 무한한 정밀도를 가진 실수에 기반한 수학에 익숙해져 있지만, 컴퓨터는 근삿값을 표현할 수 있을 뿐이다. 예를 들어 IEEE 754 실수에서 표현식 (0.1 + 0.1 == 0.2)은 참이지만, 표현식 (0.1 + 0.1 + 0.1 == 0.3)은 참이 아니다! 과학 문제에 컴퓨터를 적용할 때 이런 문제는 어렵지 않게 볼 수 있다. 초보 프로그래머들은 두 실수가 같은지 비교하는 연산을 하지 않도록 주의해야 한다.

 

Q. 실수를 출력할 때 숫자가 너무 길게 출력되어 짜증이 난다. stdio.write()stdio.writeln()을 사용할 때 소수점 이하 2자리나 3자리까지만 출력하도록 만들 수 있나?

A. 이 책의 예제용 라이브러리 함수인 stdio.wirte()는 바로 그런 일을 할 수 있다. 1.5절에서 설명하는 것처럼, 이 함수는 C 프로그래밍 언어에서 제공하는 것과 비슷한 서식 방식을 지원한다. 1.5절에 들어갈 때까지는 숫자가 약간 길게 출력되는 것을 감내하자(다양한 숫자에 익숙해질 수 있으므로, 이게 나쁜 것만은 아니다).

 

Q. 두 개의 실수에 바닥 나눗셈 연산자 //를 적용할 수 있나?

A. 적용할 수 있다. 실수를 나눈 후 소수점 이하를 제거한 몫 부분이 결과가 된다. 이 책에서는 실수에 대해 바닥 나눗셈 연산자를 사용하지 않는다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.