본문 바로가기
Error 에러 해결하기

[파이썬] 파이썬 에러 ValueError: invalid literal for int() with base10: '4.3'

by 눈표범  2021. 7. 17.

오늘은 파이썬 형변환에서 발생하는 오류인

 

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 1in <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 [생물정보학자의 블로그]

댓글