2012-12-28 2 views
0

가능한 중복 : 나는 이상한 버그를 가로 질러 왔을 때
Floating point arithmetic not producing exact results in JavaJava에서 65.12 - 2가 63.12와 다른 이유는 무엇입니까?

는 최근 프로젝트를 진행했다.

2를 65.12에서 뺀 값은 63.12보다 크다 (같지 않음). 나는이 사건이 왜 모르겠어요 누구나 간단한 수정/해결 방법을 알고 있다면이 될 것이라고 63.120000000000005

: System.out.println(65.12-2);

그리고 콘솔의 출력 :

다음은 간단한 코드입니다 큰!

감사합니다.

+1

[모든 컴퓨터 과학자가 부동 소수점 연산에 대해 알아야 할 사항] (http://download.oracle.com/docs/cd/E19957-01/806-3568)을 참조하십시오. /ncg_goldberg.html). –

+0

감사합니다. – aly

+0

반갑습니다. :) 행복한 학습. –

답변

-1

부동 소수점 값을 컴퓨터에서 처리하는 방식과 관련이 있습니다. 주제를 완전히 이해하는 데 권장되는 텍스트는 다음과 같습니다. What Every Computer Scientist Should Know About Floating-Point Arithmetic

+0

이 답변은 질문에 대한 내 의견에 언급 된 것처럼 예기치 않은 결과를 설명하지 못합니다. 빼기는 정확합니다. 원본 텍스트에서 '65.12'라는 숫자로 표시되는 double 값에서 '2'를 뺀 결과는 정확히 '65.12'보다 작습니다. 설명은 이론적으로는 링크 된 기사에서 부분적으로 파생 될 수 있지만, 너무 일반적으로 묻는 것처럼 산술 도중 반올림 한 것이 아닙니다. 대신 링크 된 아티클의 일부가 아닌 부동 소수점 값 표시와 관련된 Java 사양을 포함합니다. –

관련 문제