2014-09-08 1 views
0

C++과 java에서 비슷한 코드가 있습니다. 두 변수에 대한 값에 의한 호출이 있습니다. 두 코드 모두 1680.175 값을 전달합니다. 디버깅하는 동안 값이 Java에서 동일하게 유지되는 동안 C++에서 1680.1749999999902로 변경 될 때 볼 수 있습니다. 소수점 두 자리 뒤에 값을 써야하므로 코드가 다른 결과를줍니다.double을 사용하여 C++에서 값을 저장하더라도 값이 변경되지만 Java에서 동일하게 유지됩니다.

+0

C++ 코드가 실행 된 아키텍처에 대해 자세히 설명하십시오. 내부 표현이 다를 수 있습니다. – Codor

답변

3

값이 전혀 변경되지 않았으므로 여분의 소수가 표시되도록 인쇄했습니다. 1680.175 값은 double 부동 소수점 표기법에 정확한 표현이 없으며 가장 근접한 값은 1680.1749999999902입니다. Java에서도 마찬가지입니다.

+0

나는 디버깅 시각화 모드로 몇 자릿수를 줄인다고 생각한다. –

0

배정 밀도 값에는 가수와 지수가 있습니다. 내부적으로 1680.175는 1680.1749999999902 또는 1680.1750001002 등으로 저장 될 수 있습니다. 즉 실제 값에 가깝습니다. 정밀도가 중요하면 소수점 뒤에 여분의 유효 자릿수도 제공하십시오.

관련 문제