해결된 질문
작성
·
150
0
안녕하세요 강사님 [필수 실습 문제] 버스 요금 계산 관련 질문 있습니다.
저는 나이가 20살 미만이면 기본 버스 요금 1000원의 75% 적용한다는 구문을
printf 함수 안에 input*0.75 이렇게 적었는데요
이렇게 적으면 최종 요금이 0이 나오더라구요
이렇게 되는 이유가 최종 요금을 나타내는 형식문자가 %d인데 *0.75 를 곱해서 일어난 것 같은데
전체적으로 보면 input 0.75 = 1000 * 0.75 =750 의 정수형식이라서 상관없을 거 같은데
형식 문자가 %d 정수형이면 그 값을 나타내는 변수에도 정수만 들어가야하나요?
답변 2
0
정수와 실수의 연산결과를 실수 입니다. 따라서 %d가 아니라 %f로 출력해야 하겠습니다. 아래 인프런 AI도 이 부분에 대해 알려주고 있으니 참고하시면 되겠습니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. semu0523님,
제공하신 정보를 바탕으로 비슷한 주제에 대해 이야기한 기존 답변을 찾아봤습니다. 질문은 다음과 같이 정리할 수 있습니다: printf()
함수 내에서 input*0.75
와 같은 식을 사용할 때, 최종 요금 출력이 0으로 나오는 이유는 무엇인지에 대한 설명을 요청하고 있습니다.
다행히 이와 유사한 주제에 대해 설명하는 답변을 찾았습니다. 아래의 답변에서는 printf()
함수 내에서 정수형 변수를 사용하여 실수 연산을 수행할 때 발생하는 문제에 대해 설명하고 있습니다:
답변에 따르면, fee * 0.75
는 결과적으로 double
형식의 실수가 되며, printf
함수 내에서 %d
형식 지정자를 사용하여 이를 출력하려 할 때 컴파일러가 int형으로 강제 변환을 하여 문제가 발생할 수 있습니다. 정확한 값이 필요할 경우, 결과를 int
로 명시적으로 변환하거나, %f
같은 실수 형식 지정자를 사용하여 출력하는 방법을 고려해야 합니다.
해당 답변 내용은 질문하신 상황에서도 유사한 문제로 발생할 수 있으며, %d
정수 형식 지정자를 사용할 때는 출력하고자 하는 값이 정수형이어야 한다고 언급하고 있습니다. 실수 연산 결과를 정수로 출력하고자 할 경우, 먼저 결과를 int
형으로 변환하는 과정이 필요할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.