주된 이유는 우리가 흔히 정수 분수 대신 고정 정밀도의 소수를 사용하는 것을 선호 같은 이유입니다. 합리적 분수의 경우, (1/3) 배 3은 항상 1입니다. (1/3) 더하기 (2/3)은 항상 1입니다. 1/3 배 2는 (2/3)입니다.
왜? 정수 분수는 정확하기 때문에 정수와 똑같습니다.
고정 된 정밀도 실수로 - 너무 예쁘지 않습니다. (1/3)이 .33333
이면 3 (1/3)은 1이 아니며 (2/3)이 .66666
이면 1/3 + (2/3)이 하나가되지 않습니다. 그러나 (2/3)이 .66667
이면 (1/3) 2는 (2/3)이 아니고 1 - (1/3)은 (2/3)이되지 않습니다.
물론 더 많은 장소를 사용하여 문제를 해결할 수 없습니다. 10 진수의 숫자는 정확히 (1/3)을 나타낼 수 없습니다.
부동 소수점은 고정밀 소수점 실수 형식과 마찬가지로 고정 소수점 실수 형식입니다. 그것은 항상 당신이 기대할 수있는 순진한 규칙을 따르지 않습니다. 클래식 용지 What Every Computer Scientist Should Know About Floating-Point Arithmetic을 참조하십시오.
질문에 대답하려면, 가능한 한 항상 부동 소수점 숫자를 사용해야하며, 근사값 일 때만 정수를 사용해야합니다. 그리고 부동 소수점 수는 정밀도가 제한되어 있고 두 부동 소수점 수를 비교하여 부동 소수점 수를 비교하면 예상하지 못한 결과가 발생할 수 있음을 기억해야합니다.
당신은 * 많은 * 부동 소수점의 단점에 대해 배울 수있는 값! 클래식 [모든 컴퓨터 과학자가 부동 소수점 연산에 대해 알아야 할 사항] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)부터 시작하십시오. –
정수를 사용한 계산이 부동 소수점 숫자보다 빠릅니다. –