#다이어트 실패
## CODE
```
public class Main {
public static void main (String[] args) {
double weight = 72.4;
int n = Integer.parseInt(args[0]);
for (int i = 0; i <= n; ++i, weight += 0.2) {
System.out.println(i+"개월 후 몸무게"+weight);}
}
}
```
## INPUT
```
5
```
## OUPUT
```
0개월 후 몸무게72.4
1개월 후 몸무게72.60000000000001
2개월 후 몸무게72.80000000000001
3개월 후 몸무게73.00000000000001
4개월 후 몸무게73.20000000000002
5개월 후 몸무게73.40000000000002
```
혹시 왜 값이 0000000001 00000000002 이렇게 붙는지 알수있을까요???
sehongpark님의 답변
## 답변
**double 타입**은 정확히 떨어지는 수가 아닙니다. 따라서 소수점 이하의 정확도에 ***`오차`**가 생길 수 있습니다.*
```
double weight = 72.4;
weight += 0.2;
System.out.println(weight); // 72.60000000000001
```
## 해결
`printf()` 메소드를 사용하여 소수점 이하 자리수를 제한해보세요.
```
// 소수점 이하 둘째 자리까지 출력
System.out.printf("%.2f\n", weight); // 72.60
```
## 참고자료
---
1. float와 double의 부정확성 - https://gwpark.tistory.com/1729
hadaak14님의 답변
감사합니다