[Java] 소수점/ 반올림/ 내림

YeonCloud·2023년 12월 23일

Java

목록 보기
1/2
post-thumbnail

자바로 문제를 풀거나 프로그래밍을 할때 소수점을 다루고 표현해야할때가 있다. 그때마다 헷갈릴때가 한번 정리해보았다.

  1. 만약, int타입 변수들끼리 연산을 하는데 소수점자리까지 표현하고 싶다면 그냥 강제형변환을 하면된다.
 int a = 14, int b = 3;
 double result = (double) a / b;
 System.out.println("소수점 전부 보이기: " + result);

그냥 a나 b중에 하나를 double형으로 변환해주면 해당 값 타입은 double이 된다.

  1. 소수 3째자리까지 표현하고 싶다면, 출력할때 표현하거나 String.format()을 사용한다. (String.format()은 기본 제공 메서드이다)
int a = 14, int b = 3;
double result = (double) a / b;
System.out.printf("소수 셋째 자리까지 나타내기(반올림) 1 : %.3f \n", result);
System.out.println("소수 셋째 자리까지 나타내기(반올림) 2 : "+String.format("%.3f", result));

  • "%.3f"를 넣고 (,)뒤에 실수형을 넣는다.
  • String.format(표현하고 싶은 포멧 , 해당 인자);
  1. 그런데 만약 소수점 반올림을 하지않고 표현은 어떻게 할까 생각이 들어 구현해보았다.
    int형 강제 형변환을 하면 소수점이하를 빼버리는 특징을 이용하여 1000을 곱한뒤 소수점을 버리고 다시 1000을 나눴다.
int a = 14, int b = 3;
double result = (double) a / b;
int tmp = (int) (result * 1000);        // 4666
result = tmp / 1000.;                   // 4.666
System.out.println("소수 셋째 자리까지 나타내기(반올림 X) : " + result);

또한 내림에 관해 찾아보니 Math.floor()라는 실수를 내림해주는 함수가 있었다. 이것으로도 위 내용을 구현할 수 있을 것 같다. 그리고 올림,내림등 다양한 함수가 있어 공부해보았다.

System.out.println(Math.round(4.666));  // 반올림 -> 5
System.out.println(Math.ceil(4.666));   // 올림 -> 5.0
System.out.println(Math.floor(4.666));  // 내림 -> 4.0


Math.round()함수는 return 타입이 long(정수형)이라서 정수형으로 return한다.

0개의 댓글