<12.28 review>

박설현·2021년 12월 28일
0

1. 부동 소수점

오늘 배운 것 중 부동소수점과 고정소수점이 있었는데 자세한 내용은 아래 잘 정리된 글이 있어서 Link를 건다.

부동소수점의 문제와 해결책

프로그래밍 언어는 IEEE 754라는 국제표준에 따라 실수를 부동 소수점으로 표현한다. 파이썬의 경우 float가 그렇다. 예를 들어 234.54는 23454X10 ̄3으로 표현하고, 유효숫자e지수라는 방법으로 표현한다( 23454e-2).

문제는 부동소수점이 십진법으로는 간단히 표현되는데 컴퓨터가 이해해야 하는 2진수로 바꿀 때 무한 유효숫자를 가질 수 있게 되고 이로 인해 심각한 오류가 발생하게 된다. 예를 들어 십진수 0.1을 이진수로 나타내게 되면 0.000110011001100110011001100110011~로 무한반복되게 된다.
파이썬에서 십진수를 이진수로 바꾸는 명령어는 bin()이다.

링크에도 잘 나와 있지만 금융에서는 부동소수점을 사용하지 않는다고 한다. 이유는 부동소수점으로 무한반복이 일어날 수 있기 때문. 그래서 가상화폐의 경우도 부동소수점을 사용하지 않는다.

2. f- string

오늘 배운 내용은 아닌데 파이썬 3.7부터 적용되는 간편한 방법이라 아래와 같이 정리해 본다. 기본적인 포맷은 f'문자열{변수}문자열'입니다.

예를 들어

a = '나"
b = 500
test = f'당신과 {a}는 하루에 {b}원으로 산다'
print(test)

몇 가지 specifics을 보면

(1) 정렬 :왼쪽→ f'|{문자:<10}|'/ 가운데: → f'|{문자:^10}|'
(2) 소수점 자리수 : print(f'{3.14159265:2f}') ← 소수점 2자리
(3) 정수 자리수: print(f'{12:04d}') → 0012

3. 함수의 재귀호출

함수의 재귀호출(recursive call)은 함수 안에서 함수 자기 자신을 호출하는 방식을 말한다. 일반적 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 반복문 보다는 재귀호출이 더 직관적이고 이해하기 쉬운 경우가 많다

가장 유명한 예제는 팩토리얼 구하기이다.

def factorial(n):
	if n == 1:
    	return 1
    return n * factorial(n-1)

print(factorial(5))

재귀호출 문제가 가장 유명한 알고리즘 문제는 하노이의 탑이다.

profile
데이터 분석과 퀀트를 사랑하는 전략가입니다.

0개의 댓글