JAVA의 소수점 반올림
1. String.format() 사용
public class StringFormat {
public static void main(String[] args) {
double num = 12.3456;
String numStr0 = String.format("%.0f", num);
String numStr1 = String.format("%.1f", num);
String numStr2 = String.format("%.2f", num);
String numStr3 = String.format("%.3f", num);
System.out.println(numStr0);
System.out.println(numStr1);
System.out.println(numStr2);
System.out.println(numStr3);
}
}
출력 결과
설명
- String.format("%.nf", 실수형 변수) 의 형태로 사용
- "%.0f" 는 소수점 첫째자리에서 반올림이기 때문에 12 출력
- "%.1f" 는 소수점 둘째자리에서 반올림이기 때문에 12.3 출력
- "%.3f" 는 소수점 넷째자리에서 반올림이기 때문에 12.346 출력
- n번째 자리까지 출력하기 위해 "%.nf"라고 생각하면 편할 듯
2. printf() 사용
public class Printf {
public static void main(String[] args) {
double num = 12.3456;
System.out.printf("%.0f", num);
System.out.println();
System.out.printf("%.1f", num);
System.out.println();
System.out.printf("%.2f", num);
System.out.println();
System.out.printf("%.3f", num);
}
}
출력 결과
설명
- System.out.printf("%.nf", 실수형 변수)의 형태로 사용
- 위에서 설명한 String.format의 사용법과 유사함
- "%.0f"는 소수점 첫째 자리에서 반올림이기 때문에 12 출력
- "%.1f"는 소수점 둘째 자리에서 반올림이기 때문에 12.3 출력
- "%.3f" 는 소수점 넷째 자리에서 반올림이기 때문에 12.346 출력
3. Math.round() 사용
public class MathRound {
public static void main(String[] args) {
double num = 12.3456;
long num0Long = Math.round(num);
double num0Double = Math.round(num);
System.out.println(num0Long);
System.out.println(num0Double);
double num1 = Math.round(num * 10) / 10.0;
System.out.println(num1);
double num2 = Math.round(num * 100) / 100.0;
System.out.println(num2);
}
}
출력 결과
설명
- Math.round()는 기본적으로 소수점 첫째 자리에서 반올림 그렇기 때문에 곱하고 나누는 과정이 필요함
- num0Long 은 첫째 자리에서 반올림하고 정수형인 long 타입으로 선언된 변수에 저장했기 때문에 12 출력
- num0Double 은 첫째 자리에서 반올림하고 실수형인 double 타입으로 선언된 변수에 저장했기 때문에 12.0 출력
- num1 은 소수 첫째 자리까지 출력을 위해 12.3456에 10을 곱해서 123.456으로 값을 바꾼 후에Math.round()를 통해 123.456을 소수 첫째 자리에서 반올림하면 123 반올림된 123에 10.0으로 나눠서 12.3 출력
'Java' 카테고리의 다른 글
일급 컬렉션(First Class Collection) (3) | 2024.09.13 |
---|---|
JAVA의 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2024.07.26 |