본문 바로가기

반응형

실수

[Java] 이것이 자바다 3장 확인 문제 3 : 잘못된출력 결과 수정하기 Q3. 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요? 이클립스에 위 코드를 적어서 실행해보면 4가 출력되는 것을 볼 수 있다. 이것을 5가 출력될 수 있도록 수정을 해 보려고 한다. 먼저 어떻게하면 5가 출력이 될 수 있을지 생각을 해본다. 역순으로 아래에서부터 원하는 값을 대입해보면서 찾아보면 조금 더 쉽게 찾을 수 있을 것 같다. 위의 코드에서 var4와 var2 자리에 숫자를 대입해보면 var3은 2.5 ~ 2.9 사이의 숫자(double 혹은 float)라는 것을 알 수 있다. 그러면 var1에서 var2를 나누었을때 소수점의 수(실수)가 나와야 한다는 것을 알 수 있다. 그러므로 var1 과 var2를 double로 형 변환을 해 준 후 .. 더보기
[Java] 이것이 자바다 2장 확인 문제 4 : 연산 수행 후 int형으로 변환하기 우선 여기서는 result 를 출력했을때 나와야하는 값은 '9'인데, '9'를 만들기 위하여 어떻게 + 연산을 해야 할지를 먼저 생각해봐야할것 같습니다. 일반적으로 (컴퓨터가 아닌 그냥 사칙연산을 사용하면) ' 2 + 1.8 + 2.8 + 3.9 = 10.2 ' 가 됩니다. 그럼 여기서 9를 만들려면 어떻게 해야 할까요? '2 + 1.8 + 2.8 = 6.3' 이 되니까 덧셈을 한 후 뒤 소수점을 버리고 정수를 만든 후, 남은 3.9를 정수를 만들어 더하면 될 것 같습니다. 우선 long, float, double을 전부 int로 묶어 + 연산을 해줍니다. 그리고 string 값을 double로 형 변환 합니다. (실수라서 double로 바꾸어 보았어요.) 그리고 원래 하려고 했던 것 처럼 int로 변환.. 더보기
[Java] 이것이 자바다 2장 확인 문제 3 : 실수 덧셈 연산 후 소수점 이하 자리 버리기 먼저 연산을 한 후 소수점 이하 자리를 버리는 것이라서 double을 int로 형 변환 하기 전에 먼저 계산을 합니다. int는 정수(소수점X), double은 실수(소수점O)을 사용하기 때문에 잘 기억해야 합니다. 계산 후 int로 형 변환을 해주면 int가 소수점 자리는 필요없다고 던져버리면서 '6'이 되게 됩니다. 만약 int가 아니고 double로 계산을 하게 되면 어떻게 될까요? 아까 말씀드린것과 같이 double은 소수점을 사용하기 때문에 출력값에도 소수점이 나오게 되어있죠. 연산을 하기 전 먼저 int로 변환을 하게 되면 var1 = 3.5가 소수점을 날려버리면서 3이 되고, var2 = 2.7가 소수점을 날려버리면서 2가 되어 답이 5가 되어 조금 달라지게 되겠죠? 순서를 잘 살피기! 더보기

반응형