5.2 실수 계산하기
1.5, 3.333333처럼 소수점이 붙은 수를 실수라고 하죠? 이번에는 실수끼리 계산을 해보겠습니다.
>>>에 3.5 + 2.1를 입력해보세요.
>>> 3.5 + 2.1 5.6
덧셈의 결과인 5.6이 잘 나왔습니다. 이번에는 뺄셈, 곱셈, 나눗셈을 해보죠.
>>> 4.3 - 2.7 1.5999999999999996 >>> 1.5 * 3.1 4.65 >>> 5.5 / 3.1 1.7741935483870968
그런데 4.3 - 2.7의 결과가 좀 이상합니다. 1.6이 나와야 하는데 1.5999999999999996이 나왔습니다. 왜냐하면 컴퓨터는 실수를 표현할 때 오차가 발생하기 때문입니다.
컴퓨터는 2진수로 숫자를 표현합니다. 2진수로 정확하게 표현할 수 있는 숫자와 그렇지 못한 숫자가 있습니다. 4.3-2.7의 결과는 2진수로 정확하게 표현할 수 없으므로 끝에 오차가 발생합니다. 이는 컴퓨터가 멍청하기 때문은 아닙니다. 10진수에서 1/3=0.33333...이므로 정확하게 표현할 수 없습니다. 숫자 표기법에 따라 정확하게 표기할 수 있는 숫자가 다를 뿐입니다.
지금까지 실수끼리 계산을 해보았습니다. 실수와 정수를 함께 계산하면 어떻게 될까요?
>>> 4.2 + 5 9.2
실수인 9.2가 나왔습니다. 실수와 정수를 함께 계산하면 표현 범위가 넓은 실수로 계산됩니다(실수가 정수보다 표현 범위가 넓습니다).
계산 결과가 정수이지만 강제로 실수로 만들려면 계산식을 괄호로 묶은 뒤 앞에 float를 붙여주면 됩니다.
>>> float(1 + 2) 3.0
float는 부동소수점(floating point)에서 따왔으며 결과를 실수로 만들어줍니다.
파이썬에서는 실수부와 허수부로 이루어진 복소수(complex number)도 사용할 수 있습니다. 이때 허수부는 숫자 뒤에 j를 붙입니다(수학에서는 허수를 i로 표현하지만 공학에서는 j를 사용합니다).
>>> 1.2+1.3j (1.2+1.3j)
두 실수를 복소수로 만들 때는 complex를 사용하면 됩니다.
>>> complex(1.2, 1.3) (1.2+1.3j)