반올림과 스케일
정밀도와 반올림 모드를 제어합니다
반올림과 스케일은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Scale과 정밀도
모든 BigDecimal에는 소수점 오른쪽 자릿수를 나타내는 scale이 있습니다. 12.340의 scale은 3입니다. scale을 제어하면 돈을 항상 소수점 이하 두 자리로 표시할 수 있습니다.
Scale 확인하기
scale()을 호출하면 값이 포함하는 소수점 이하 자릿수를 확인할 수 있고, precision()을 사용하면 유효 숫자의 총 개수를 확인할 수 있습니다.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.340");
System.out.println(v.scale());
System.out.println(v.precision());
}
}소수점 자릿수 고정에 setScale 사용하기
setScale은 값의 소수점 이하 자릿수를 지정한 개수로 고정합니다. 반올림이 필요하면 RoundingMode를 전달해야 합니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.3456");
System.out.println(v.setScale(2, RoundingMode.HALF_UP));
}
}HALF_UP, 일반적인 방식
RoundingMode.HALF_UP은 가장 가까운 값으로 반올림하며, 두 값의 중간이면 0에서 멀어지는 방향으로 반올림합니다. 학교에서 배우는 일상적인 반올림 방식입니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
}
}HALF_EVEN, 은행식 반올림
HALF_EVEN은 중간값을 가장 가까운 짝수 숫자 쪽으로 반올림합니다. 여러 번 반올림할 때 편향을 줄여 주므로 은행에서 선호합니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
}
}CEILING과 FLOOR
CEILING은 항상 양의 무한대 방향으로 반올림하고, FLOOR는 항상 음의 무한대 방향으로 반올림합니다. 버려지는 숫자와는 관계없이 적용됩니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.1");
System.out.println(v.setScale(0, RoundingMode.CEILING));
System.out.println(v.setScale(0, RoundingMode.FLOOR));
}
}DOWN과 UP
DOWN은 0을 향해 잘라 내고, UP은 항상 0에서 멀어지는 방향으로 반올림합니다. DOWN은 단순히 잘라 내는 방식입니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.9");
System.out.println(v.setScale(0, RoundingMode.DOWN));
System.out.println(v.setScale(0, RoundingMode.UP));
}
}나눗셈 중 반올림
나눗셈은 끝없이 이어지는 십진수를 만들 수 있으므로 divide 호출에서 scale과 반올림 방식을 바로 제공해야 합니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal bill = new BigDecimal("100.00");
BigDecimal people = new BigDecimal("3");
System.out.println(bill.divide(people, 2, RoundingMode.HALF_UP));
}
}뒤따르는 0 제거하기
stripTrailingZeros는 불필요한 0을 제거합니다. 출력에서 과학적 표기법을 피하려면 toPlainString과 함께 사용하세요.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.300");
System.out.println(v.stripTrailingZeros().toPlainString());
}
}돈 형식 지정하기
표시할 때는 HALF_UP과 함께 scale을 2로 설정하여 정수 금액이라도 가격이 항상 소수점 이하 두 자리로 표시되게 하세요.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal amount = new BigDecimal("7");
System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
}
}방식 선택하기
일반 사용자에게 표시하는 반올림에는 HALF_UP을 선택하고, 누적 편향을 줄여야 하는 회계에는 HALF_EVEN을 선택하세요. 끝나지 않는 결과에서도 코드가 오류를 발생시키지 않도록 항상 방식을 지정하세요.
빠른 확인
scale과 반올림에 대해 배운 내용을 확인해 보세요.
복습
정밀도를 제어하는 방법을 배웠습니다.
- Scale은 소수점 뒤의 자릿수입니다
setScale은 소수점 자릿수를 고정하며RoundingMode가 필요합니다HALF_UP은 일상적인 반올림이고HALF_EVEN은 은행식 반올림입니다CEILING,FLOOR,UP,DOWN은 방향을 지정하는 반올림을 제공합니다- 예외를 피하려면 나눗셈에 항상 방식을 지정하세요
자주 묻는 질문
“반올림과 스케일” 강의는 무료인가요?
네 — “반올림과 스케일” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“반올림과 스케일”에서 뭘 배우나요?
정밀도와 반올림 모드를 제어합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“반올림과 스케일” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.