오늘은 파이썬 형변환에서 발생하는 오류인
ValueError: invalid literal for int() with base 10: '4.3'
에 대하여 알아보겠습니다.
파이썬에서는 형변환이 간단합니다.
문자형으로 바꿀 때는 str()
정수형으로 바꿀 때는 int()
실수형으로 바꿀 때는 float()
를 각각 사용합니다.
문자열을 정수로 변환
1 2 3 |
>>> a = '10' >>> int(a) 10 |
문자열을 실수로 변환
1 2 3 |
>>> b = '4.3' >>> float(b) 4.3 |
정수를 문자열로 변환
1 2 3 |
>>> c = 7 >>> str(c) '7' |
실수를 문자열로 변환
1 2 3 |
>>> d = 2.71 >>> str(d) '2.71' |
문제 상황
ValueError: invalid literal for int() with base 10: '4.3'
문자열을 정수로 바꾸려고 int함수를 사용하였는데,
아래와 같이 ValueError 가 발생하였습니다.
1 2 3 4 5 |
>>> e = '4.3' >>> int(e) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '4.3' |
어떻게 된 일일까요??
해결 방법
int 함수는 정수문자열(interger string, "3.14" 과 같은), 실수(float, 6.02)를 인자로 받기를 기대합니다만
예시와 같이 실수문자열(float string)은 넣게 되면 ValueError 가 나게 됩니다.
그렇다면 어떻게 하면 정수로 바꿀 수 있을까요?
먼저 바꾸려는 실수문자열을 float함수를 사용하여 실수로 바꿉니다.
그 다음 실수를 int함수를 사용하여 정수로 바꾸면 됩니다.
1 2 3 4 5 |
>>> e = '2.71' >>> float(e) 2.71 >>> int(float(e)) 2 |
cs |
소수점 아래를 잘라내서 정수만 남음
반올림의 개념이 아니라 정수 부분만 남게 된 것.
출처: https://korbillgates.tistory.com/94 [생물정보학자의 블로그]
댓글