본문으로 건너뛰기

Java 소수점 2자리 반올림, n자리 반올림

Math.round(), String.format()을 이용하여 소수점 n자리까지 반올림하는 방법입니다.

1. Math.round()

Math.round(n)은 n을 1의 자리까지 반올림합니다.

round()를 이용하여 123.456을 소수 2자리까지 반올림하려면 아래와 같이 연산하면 됩니다.

  • 123.456을 10의 2제곱(100)을 곱함 => 123.456 * 100 = 12345.6
  • 12345.6을 round()로 반올림 => Math.round(12345.6) = 12346
  • 12346을 10의 2제곱(100)으로 나눔 => 12346 / 100 = 123.46

Math.pow(10, n)으로 10의 n제곱을 계산할 수 있고, 아래와 같이 n자리까지 반올림 할 수 있습니다.

public class Example {
public static void main(String[] args) {

System.out.println(Math.round(3.14159)); // 3
System.out.println(Math.round(3.94921)); // 4

int n = 3;
double scale = Math.pow(10, n);
System.out.println(Math.round(3.14159 * scale) / scale); // 3.142
System.out.println(Math.round(3.94921 * scale) / scale); // 3.3949

n = 2;
scale = Math.pow(10, n);
System.out.println(Math.round(3.14159 * scale) / scale); // 3.14
System.out.println(Math.round(3.94921 * scale) / scale); // 3.95
}
}

Output:

3
4
3.142
3.949
3.14
3.95

반올림 대신에 버림, 올림을 하고 싶다면 Math.round() 대신에 Math.floor(), Math.ceil()를 사용하면 됩니다.

1.1 n번째 자리수까지 반올림 함수

아래와 같이 n번째 소수점까지 반올림하는 것을 함수로 만들 수 있습니다.

public class Example {

public static double roundToDecimalPlaces(double number, int n) {
double scale = Math.pow(10, n);
return Math.round(number * scale) / scale;
}

public static void main(String[] args) {

System.out.println(roundToDecimalPlaces(3.14159, 3));
System.out.println(roundToDecimalPlaces(3.94921, 2));
}
}

Output:

3.142
3.95

2. String.format()

String.format("%.nf", number)는 number를 소수 n자리까지 표기합니다.

public class Example {
public static void main(String[] args) {

double number = 3.14159;

System.out.println(String.format("%.2f", number));
System.out.println(String.format("%.3f", number));
System.out.println(String.format("%.4f", number));
}
}

Output:

3.14
3.142
3.1416