본문 바로가기

컴퓨터공학/파이썬2

round(1.555,2) 는 1.55이다? round() 함수를 시험하다가 사람 참 즐겁게 하는 결과를 만났다. (참고로 round()함수는 반올림을 해주는 python의 내장 함수다.) 다음을 보자. a = 1.2345 round(a,2) 1.23 round(a,3) 1.234 .....띠용? 아니 왜 1.235가 아니라 1.234일까? 반올림하면 1.235가 맞는데? 해서 검색해보니 나와 같은 짓을 한 외국인이 있었다. 결론은 이렇다. 원인은 floating point, 즉 부동 소수점이다. 컴퓨터의 아주 밑바닥까지 들어가면 값은 0과 1로 이루어져 있다. 즉, 2진수로 모든 값을 표현해야 한다. 그러니 위의 a 값이 컴퓨터에는 1.23449999999999999345234119999999........ 따위와 같은 수로 저장 된다는 것이다... 2019. 10. 19.
for 문은 인덱스 중심으로 돌아간다. 한 코드를 검토하는데 깨달음을 얻은 코드가 있다. a = [1,2,3,4,5,6] for i in a: print(a) a.remove(i) 예상 결과는 이랬어야 했다. [1,2,3,4,5,6] [2,3,4,5,6] [3,4,5,6] ... [6] 그러나 실제 결과는 이랬다. [1, 2, 3, 4, 5, 6] [2, 3, 4, 5, 6] [2, 4, 5, 6] 예상과 다른 결과가 나온 이유는 간단하면서도 새롭게 알게된 점이 있었다. 1. 간단한 이유 : for i in a 에서 a가 remove로 인해 바뀌는데, a가 바뀌지 않는다고 생각한 것이다. 2. 새로 알게 된 점 : for문에서 a가 변하더라도, i가 가리키는 값은 index[0]부터 하나씩 올라가면서 출력하기 때문이다. 즉, 위에서 for 문.. 2019. 10. 18.