자바 for문 공부 중에 이런 예제 코드를 짰다.
package practice;
public class Chap0404 {
public static void main(String[] args) {
int sum = 0;
for (int i=1; i <=100; i++) {
sum = sum + i;
}
System.out.println("The sum of 1~100 (d=1): "+sum);
double sumd = 0;
for (double i=1; i <=10; i=i+0.1) {
sumd = sumd + i;
}
System.out.println("The sum of 1~10 (d=0.1): "+sumd);
}
}
결과가 각각 5050, 500.5가 나와야 하는데 잉?
5050과 500.49999999999966이 나오는 게 아닌가..?
아니 왜..?
ChatGPT에게 물어봤다.
아...
십진수 입력값을 이진수로 바꾸는 과정에서 데이터 손실이 발생한다고 한다.
컴퓨터는 이진수로 사고하니까 어떻게 할 수는 없고..
반올림을 통해서 문제를 해결할 수 있다.
관련해서 좋은 글이 있어서 공유한다.
'개발 의문 해결' 카테고리의 다른 글
MVC 개발 패턴이란? (0) | 2023.06.08 |
---|---|
JSP 세션 유지 안 되는 이유 | Session 값이 null이 되는 이유 (0) | 2023.06.01 |
JavaScript 함수를 Node.js에서 사용할 수 없는 이유 (0) | 2023.03.30 |
컴퓨터 프로그래밍에서 말하는 엔진은 무엇일까? (0) | 2023.03.22 |
<button>과 <input type="button"> 중 어떤 걸 써야 하지? (0) | 2023.03.08 |