//금전 계산에 부동 소수점 연산을 사용하는 잘못된 프로그램
public static void main(String[] args) {
double funds = 1.00;
int itemsBought = 0;
for (double price = .10; funds >= price; price += .10) {
funds -= price;
itemsBougth++;
}
System.out.println(itemBougth + " items bought.");
System.out.println(“Change: $" + funds);
}
1달러를 가지고 있고 10센트, 20센트, 30센트 등의 가격이 붙은 사탕을 구매하려 할 때 가장 싼 사탕부터 시작해 차례대로 비싼 사탕을 구매시 몇 개의 사탕을 구매하고, 잔돈이 얼마인지 계산하는 예제
public static void main(String[] args) {
final BigDecimal TEN_CENTS = new BigDecimal(".10");
int itemsBought = 0;
BigDecimal funds = new BigDecimal("1.00");
for (BigDecimal price = TEN_CENTS;
funds.compareTo(price) >= 0;
price = price.add(TEN_CENTS)) {
funds = funds.subtract(price);
itemsBought++;
}
System.out.println(itemsBought + " items bought.");
System.out.println("Change: $" + funds);
}
public static void main(String[] args) {
int itemsBought = 0;
int funds = 100;
for (int price = 10; funds >= price; price += 10) {
funds -= price;
itemsBought++;
}
System.out.println(itemsBought + " items bought.");
System.out.println("Money left over: " + funds + " cents");
}
관계된 수치
- 십진수 아홉 개 이하로 표현이 기능할 때는 int 사용
- 18개 이하로 표현 가능할 때는 long 사용
- 그 이상일 때는 BigDecimal 사용