무엇이 문제일까요??
Int(Double(emoticonPrice) * (Double(100 - salePercent) / 100)) 이 부분이 문제 일 수 있겠네요. 이모티콘 가격이 100 이상 세일도 10,20,30,40 밖에 없어서 Double로 처리할 필요 없습니다. Double없이 연산해서 한 번 해보세요
저도 Swift 에서 똑같은 문제 겪었는데
Int(Double(emoticonPrice) * (Double(100 - salePercent) / 100))
이부분이 문제였습니다. 연산 순서를 다르게 하니 되더라구요;;;; 왜이러는지는 모르겠습니다.
수식을 간단하게 바꿔서 표시해보자면
(100 - x) / 100 * y // 오답 (13, 15, 18)
(100 - x) * y / 100 // 정답
y * (100 - x) / 100 // 정답
(100 - x) * 0.01 * y // 정답
이렇게 나오네여;;
감사합니다..!
컴퓨터는 소수점 연산을 잘 못해서 그럽니다. 일일이 print 해서 보시면 678.9999999 이런 식으로 나와요. 나눗셈을 최대한 뒤에서 해야 (최대한큰수 / 100)이 돼서 오류가 덜 납니다. 문제에서 굳이 100의 배수라고 준 게 이거 때문 같더라고요.
이런이유였군요...