본문 바로가기
IT/Python

Python Error - ValueError: invalid literal for int() with base 10:

by 큰공 2021. 10. 21.
728x90
반응형

 

들어가며

 오늘 살펴볼 파이썬 에러코드는 아래 에러 코드 입니다.

ValueError: invalid literal for int() with base 10: '218060850477.326'

 'ValueError: invalid literal for int() with base 10: '218060850477.326' 에서 '' 상에 묶여져 있는 숫자는 언제든지 바뀔 수 있습니다.

 

DATA TYPE

 우선 위 에러코드를 알기전에 "DATA TYPE"이 뭔지 " 형변환" 이 뭔지 알고가야 합니다.

 파이썬 뿐만아니라 대부분의 언어에서 변수를 나타내는 DATA TYPE ( 형 )을 가지고 있습니다. 해당 변수가 정수인지, 실수인지, 문자열인지, 또 다른 구조를 가지고 있는지를 뜻합니다.

 

 또한 Python 에서는 아래와 같은 다양한 Data Types 을 가지고 있습니다.

 

형변환

 특정 변수가 가지고 있는 "1.2" 라는 값이 있다고 합시다. 사용자는 이게 숫자인지, 문자열인지를 알아야 합니다. 문자 1.2 는 덧셈 뺄셈이 불가능하고, 숫자 1.2 는 덧셈 뺄셈이 가능하죠.

 

 따라서 문자열 "1.2" 를 덧셈뺄셈등의 연산을 하기 위해서 숫자 "1.2" 로 변환하는 과정을 "형변환" 이라고 합니다.

 

파이썬 형변환

 파이썬에서는 여러가지 형변환 함수를 제공하고 있는데, 대표적인 함수는 아래와 같습니다.

  • str() : 문자열로 바꾸기
  • int() : 정수로 바꾸기
  • float() : 실수로 바꾸기

또한 int () 형변환 함수를 사용할때는 유념해야 할 점이 있습니다.

a ='1.2'

int(a)

 이 예시를 실행하면 바로

 

 'ValueError: invalid literal for int() with base 10:

 

에러가 발생합니다. int() 정수문자열(interger string) 실수만 인수로 받기 때문입니다.

 

 

에러

 에러 코드는 아래 코드에서 발생하였습니다. "data['acc_trade_value']" 가 소수점으로 된 문자열이고, 이를 int () 로 변환하고자 할때, int 안의 인자가 실수와 , 정수 문자열이 아니기 때문에 발생합니다.

 

total_value = total_value + int ( data['acc_trade_value'] )

 

해결 방법

 1) 소수점이 포함된 문자열을 정수로 형 변환을 하고 싶을 때, 먼저 float 으로 형변환을 한다.

 2) float 으로 형변환한 실수를 다시 int 정수로 변환한다.

 

total_value = total_value + int ( float ( data['acc_trade_value'] ) )

 

 

 

728x90
반응형

댓글