:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
13/08/26 00:32
댓글 감사합니다.
지금해보니까 자바 이클립스에서 double x=3L; 처럼 정수형값을 대입할때는 double x=3L; 처럼 L을 붙혀줘도 되지만 double x=3.0; 처럼 실수형 값을 대입할때는 double x=3.0L; 로하면 에러나네요 참고로 l,L 대소문자 상관없네요 흠.. ㅜ
13/08/26 00:23
자바 뿐 아니라 컴퓨터에서 흔히 쓰이는 IEEE 754 실수 표현 방법을 이용하는 경우에 모두 저렇게 될 수 있습니다.
영어가 편하다면 다음 문서를 찾아서 읽어보시는 것을 강력히 권해드립니다. What Every Computer Scientist Should Know About Floating-Point 컴퓨터에서 기본적으로 지원하는 실수 연산이라고 하는 것은, 실수를 그 자체로 다루지 않고 어떤 정확도까지만 근사한 값을 사용합니다. 1.2, 0.1 같은 경우에는 2진수 표현에서 나눠떨어지지 않기 때문에 어쩔 수 없이 잘리는 부분이 생기고, 그래서 저런 일이 생깁니다.
13/08/26 00:34
흠.. 그러면 실수의 뺄셈 연산은 정확한 값을 보장하지 못하나요? 계산기 만들고 있는데 낭패네요..;
지금 다시 해보니까 float x=3.2f; 이런식으로 float으로 바꿔봐도 System.out.println(a-c); System.out.println(b-d); 등에서 이상한 값이 출력되네요 헐.. 실수의 덧셈,곱셈,나눗셈은 아무 문제 없는데 말이죠..
13/08/26 00:40
뺄셈만의 문제가 아닙니다.
컴퓨터에서 실수를 구현..이라고 해야하나.. 어쨌든 일반적으로 실수를 표현하는 방식 자체가 우리가 생각하는 10진법 실수를 정확하게 표현하는 방식이 아니라 이를 근사하게 표현한 근사치입니다. 덧셈이나 곱셈 나눗셈도 기본적으로 계산이 반복되면 정확하게 일반적으로 원하는 정수로 떨어지지 않고 소수점 낮은 자리에 숫자가 존재하거나 합니다.
13/08/26 10:13
double인 경우에는 integer 나 long으로 변환하여서 연산후 다시 double로 만들면 됩니다.
예를들면 1.5 - 1.3을 구할 때 양변을 * 10을 해서 long으로 15 - 13으로 바꾼후 다시 /10으로 해서 double로 바꾸면 됩니다. 그리고 integer 와 long이 한계치가 있는데 그 이상은 BigDecimal로 아주아주 큰 숫자에 대한 연산으로 계산후 다시 나누면 됩니다.
|