나눗셈을 할때, 반올림을 할때 형변환을 주의해야한다.
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가 된다.
'자바 > ++' 카테고리의 다른 글
[Java] Comparator , Comparable , 익명객체(클래스) (0) | 2022.12.04 |
---|---|
[Java] Collection (컬렉션) 정리 (0) | 2022.12.04 |
[Java] Split 메소드 문자열 자르기 (0) | 2022.12.03 |
Collections.sort() 와 Arrays.sort() 시간복잡도, 사용법 (0) | 2022.12.03 |
[Java] BufferedReader, BufferedWriter (0) | 2022.12.03 |
댓글