float a = 0.54
float b = 0.55
float c = 0.56
printf("%.1f\n", a); -1
printf("%.1f\n", b); -2
printf("%.1f\n", c); -3
1결과 : 0.5
2결과 : 0.5
3결과 : 0.6
여기서 소수 첫째자리까지 출력하였을때
2의결과는 0.5가 나오고(두번째 자리 숫자가 5인데 불구하고)
3의결과는 0.6이 나옵니다.
그것에 대한 대답을 다른분이 해주셨는데.
저장된 2진수 관점으로 생각해야 한다고 하셨죠
즉
0.55 = 0.1000110...(2진수) = 0.5487...(10진수)
0.56 = 0.1000111...(2진수) = 0.558...(10진수)
이기 때문에
0.55는 소수 두번째자리 반올림하여 0.5가 되고
0.56은 소수 두번째자리 반올림하여 0.6이 된다고 이해를 했습니다.
하지만 여기서 궁금한게 생깁니다.