2017-02-15 14 views
-1

인쇄 문에서이 코드를 인쇄하면 출력이 올바르지 않습니다.왜 시스템에서 십진수를 뺄 때 출력이 올바르지 않다.

System.out.println(3.15 - 3); 

출력은 다음과 같습니다

0.1499999999999999 

내가 출력해야합니다 생각합니다.

0.15 
+2

부동 소수점 연산이 정확하지 않습니다. 이것에 관한 많은 문학이 있습니다. – Brick

+0

왜 그렇게하는 자바 !! .. 그리고 거기에 어떤 해결책이 있습니까? –

+1

"Java"는 그렇게하지 않습니다. 수학에 대한 근본적인 진실이며 부동 소수점 표현이있는 모든 언어에서 공통적 인 실수의 유한 정밀 표현입니다. 고정 소수점과 관련된 문제는 다를 수 있습니다. 문제는 실제 숫자가 무한대이고 정확히 16 비트 만 정확하게 표현할 수있는 것입니다. "부동 소수점 산술"을 검색하십시오. – Brick

답변

-1

System.out.println ((float) (3.15 - 3.0))); // 대답은 0.15

System.out.println (3.15f - 3); // 대답은 0.1500001

System.out.println (3.15 - 3.0); // 대답은 0.1499999999999999

+0

감사합니다 ♥ –