[프로그래밍 기초]에 관심이 있으신가요?
무제한으로 수강해 보세요!
코드잇 시작하기
2018 프로그래밍 시작하기>자료형>형 변환 정리
print(int("3.0"))이 오류가 나오는 이유
Siwon ParkSiwon ..Siwon ParkSTONE
2017년 3월 30일 작성
Siwon ParkSiwon ..Siwon ParkSTONE
print(float(3))
print(float("3"))
print(float(3.0))
print(float("3.0"))
print(int(3))
print(int("3"))
print(int(3.0))
print(int("3.0"))
3.0
3.0
3.0
3.0
3
3
3
Traceback (most recent call last):
  File "untitled.py", line 8, in <module>
    print(int("3.0"))
ValueError: invalid literal for int() with base 10: '3.0'

형변환 여러가지 연습해보다가 질문드려요! 이 중 마지막만 오류가 나는데 그 이유가 무엇인가요?

여러가지로 연습해보시니까, 나중에도 정말 잘 하실 것 같은 기분이 드네요!

int는 정수형인데, 문자열 "3.0"int로 전환하기 위해서는 문자열 -> 소수형 -> 정수형으로의 변환이 필요합니다.

print(int(float("3.0")))처럼하면, "3.0"float로 변환되어 3.0이 되고, 정수형으로 다시 변환되어 3이 됩니다.

두 번의 변환 과정이 필요하므로, 바로 print(int("3.0"))을 하면 오류가 나옵니다.

이렇게 말씀드리면, 2번의 print(float("3"))은 왜 되는지에 대한 의문이 생길 것입니다. "3"을 소수형으로 변환되면서 " 문자열을 이루는 쌍따옴표가 제거되고, .0이 붙습니다. 이 경우, 수에 관해서는 정보의 손실이 일어나지 않는 반면, 위의 8번의 경우에는 수에 관해서 소수점 아랫부분이 사라지면서 정보의 손실을 겪게 되는 차이가 있습니다. 때문에 2번의 케이스는 오류가 나지 않는 것이고, 8번의 케이스는 한 번에 변환할 수 없기에 오류가 나오는 것입니다.

위에 말씀하신데로 문자열 -> 소수형 -> 정수형으로 변경해서 print(int(float(str("3.0")))) 이렇게 표현해 보니 값이 잘 나오네요

관련 질문
2018 프로그래밍 시작하기>자료형>형 변환 정리
2019년 1월 5일 작성
김현정김현정
답변 259 조회
2018 프로그래밍 시작하기>자료형>형 변환 정리
2018년 5월 11일 작성
Brsh kimBrsh k..Brsh kim
답변 158 조회
2018 프로그래밍 시작하기>자료형>형 변환 정리
2018년 10월 29일 작성
공일공일
답변 150 조회