Java 에서 부동 소수점 숫자 반올림하기

JavaBeginner
지금 연습하기

소개

숫자를 반올림한다는 것은 숫자의 근사값을 구하는 것을 의미합니다. Java 에서는 부동 소수점 숫자를 반올림하는 여러 가지 방법이 있습니다. 이 Lab 에서는 Java 에서 다양한 방법을 사용하여 숫자를 반올림하는 방법을 배우겠습니다.

printf() 메서드를 사용한 반올림

System.out.printf() 메서드를 사용하여 반올림된 숫자를 콘솔에 출력할 수 있습니다. 정밀도 수정자를 사용하여 반올림하려는 소수점 자릿수를 지정할 수 있습니다.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.printf("Pi: %.2f %n", pi); // prints Pi: 3.14
  System.out.printf("One Third: %.3f %n", oneThird); // prints One Third: 0.333
  System.out.printf("Gravitation Acceleration(g): %.0f", g); // prints Gravitation Acceleration(g): 10
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음 javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

DecimalFormat() 메서드를 사용한 반올림

DecimalFormat 클래스를 사용하여 숫자를 서식 지정하려는 패턴을 지정할 수 있습니다. 해시태그 (#) 를 사용하여 소수점 자릿수를 지정한 다음, format() 메서드를 사용하여 숫자를 반올림할 수 있습니다.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  DecimalFormat d1 = new DecimalFormat("#.##");
  DecimalFormat d2 = new DecimalFormat("#.###");
  DecimalFormat d3 = new DecimalFormat("#");

  System.out.println("Pi: " + d1.format(pi)); // prints Pi: 3.14
  System.out.println("One Third: " + d2.format(oneThird)); // prints One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + d3.format(g)); // prints Gravitation Acceleration(g): 10
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음, javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

Math.round() 메서드를 사용한 반올림

Math.round()를 사용하여 소수를 반올림할 수 있습니다. 숫자를 소수점 0 자리로 반올림하려는 경우에 사용할 수 있습니다.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.println("Pi: " + Math.round(pi)); // prints Pi: 3
  System.out.println("One Third: " + Math.round(oneThird)); // prints One Third: 0
  System.out.println("Gravitation Acceleration(g):" + Math.round(g)); // prints Gravitation Acceleration(g): 10
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음, javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

사용자 정의 반올림 메서드 생성

소수점 자릿수가 0 보다 큰 숫자로 반올림하려는 경우, 자체 메서드를 생성하여 소수를 반올림할 수 있습니다. 다음 메서드는 소수 값과 반올림할 소수점 자릿수를 매개변수로 받아 반올림된 숫자를 반환합니다.

public static double round(double num, int places) {
  double scale = Math.pow(10, places);
  double roundedNum = Math.round(num * scale) / scale;
  return roundedNum;
}

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.println("Pi: " + round(pi, 2)); // prints Pi: 3.14
  System.out.println("One Third: " + round(oneThird, 3)); // prints One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + round(g, 0)); // prints Gravitation Acceleration(g): 10.0
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음, javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

BigDecimal 을 사용한 반올림

BigDecimal 클래스의 round() 메서드를 사용하여 숫자를 반올림할 수 있습니다. 다음 코드는 BigDecimal 클래스의 round() 메서드를 사용하여 소수를 반올림하는 방법을 보여줍니다.

public static void main(String args[]) {
  BigDecimal pi = new BigDecimal("3.14159265359");
  pi = pi.setScale(4, RoundingMode.HALF_UP); // Rounds to 4 decimal places

  System.out.println("Pi: " + pi); // prints Pi: 3.1416
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음, javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

BigDecimal 을 사용하여 BigDecimal 이 아닌 숫자 반올림

숫자가 BigDecimal 타입이 아닌 경우, 먼저 변환한 다음 BigDecimal 클래스를 사용하여 반올림할 수 있습니다. 다음 메서드는 double 데이터 타입의 숫자를 반올림하는 데 사용할 수 있습니다.

public static double round(double num, int places) {
  BigDecimal b = new BigDecimal(Double.toString(num));
  b = b.setScale(places, RoundingMode.HALF_UP);
  return b.doubleValue();
}

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  double g = 9.807f;

  pi = round(pi, 4);
  oneThird = round(oneThird, 3);
  g = round(g, 0);

  System.out.println("Pi: " +pi); // prints Pi: 3.1416
  System.out.println("One Third: " + oneThird); // prints One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + g); // prints Gravitation Acceleration(g): 10.0
}

코드를 실행하려면 터미널을 열고 코드 파일이 있는 디렉토리로 이동합니다. 그런 다음, javac filename.java를 사용하여 코드를 컴파일합니다. 그 후, java filename을 사용하여 실행합니다.

요약

이 랩에서는 Java 에서 소수를 반올림하는 다양한 방법을 배웠습니다. 간단한 반올림에는 printf()DecimalFormat()을 사용했고, 소수점 자릿수 0 으로 반올림하는 데는 Math.round()를, 정확한 반올림에는 BigDecimal을, 그리고 decimal4j 라이브러리를 사용하여 반올림하는 데는 DoubleRounder를 사용했습니다. 또한, 임의의 소수를 임의의 소수점 자릿수로 반올림하는 사용자 정의 메서드를 만들었습니다.