자바/++

[Java] 나눗셈

backend dev 2022. 12. 4.

나눗셈을 할때, 반올림을 할때 형변환을 주의해야한다.

 

bw.write(-9/5+"\n");

 

의 결과는 -1이다.

 

정수와 정수의 나눗셈은 정수로 나오기 마련이다.

double answer = -9/5;

answer에는 어떤값이 담겼을까?

-9/5의 결과가 -1이므로 

결국 answer의 담긴값은 -1.0이 된다.

 

 

나눗셈의 결과로 소숫점을 얻고싶다면 형변환을 해야한다.

(float) 또는 (double) 을  분모 또는 분자에 붙여주거나

bw.write((double)-9/5+"\n");
bw.write((float)-9/5+"\n");

결과 : -1.8

 

 

 

정수.0 과같이 실수화 하면된다.

double answer = -9 / 5.0;
System.out.println("answer = " + answer);

 

 

 

반올림 주의사항

int roundResult1 = Math.round(-9 / 5);
System.out.println("roundResult1 = " + roundResult1);

해당 코드의 결과는 -1이 된다.

-9/5의 결과인 -1을 반올림하므로 값이 그래도인것이다.

 

double roundResult1 = Math.round((double)-9 / 5);
System.out.println("roundResult1 = " + roundResult1);

(double)-9/5 의 결과는 -1.8 이고 반올림해서 -2.0이 roundResult1에 저장된다.

 

int roundResult2 = (int)Math.round((double) -9 / 5);
System.out.println("roundResult2 = " + roundResult2);

반올림의 결과 -2.0를 int로 형변환했으므로 -2가 된다. 

댓글