문제

10 진수 (베이스 10), 1/3 0.33333으로 만 근사화 될 수 있습니다.

이진의 숫자는 근사치로만 표현할 수있는 숫자는 무엇입니까?

도움이 되었습니까?

해결책

0.1은 그러한 예 중 하나이며 0.2

이 질문은 또한 비슷합니다 이것은 다른 질문입니다, 이미 아주 좋은 답변이 있습니다.

다른 팁

더 좋은 질문은 어떤 숫자를 묻는 것입니다 ~할 수 있다 이진으로 정확하게 표현됩니다. 다른 모든 것은 근사치 또는 전혀 표현되지 않을 수 있습니다.

보다 모든 컴퓨터 과학자가 부동 소수점 산술에 대해 알아야 할 것.

글쎄, 그 표기에는 정확하게 표현할 수없는 무한한 숫자가 있지만, 여기에 1/10이 있습니다.

나는 당신이 유한 표현을 사용하여 바이너리로 어떤 합리적 숫자를 표현할 수 있는지 묻는 것을 의미한다고 가정합니다. 소수점에서 1/3의 예에서 이것을 추론하고 있습니다. 사실은 그게됩니다 모든 무한 표현을 허용하는 경우 이진으로 합리적 번호를 표현할 수 있습니다. 그러나이 질문은 유한 한 표현 만 허용하는 경우 컴퓨터 과학 관점에서만 흥미 롭습니다. 나는 당신이 특정 컴퓨터 표현에 대해 묻지 않는다고 가정하고 있습니다 (예 : IEEE 754)하지만 오히려 일반적인 위치 표현에 대해 묻습니다.

합리적 번호 p/q ~와 함께 (p, q) = 1 베이스에서 유한 표현을 표현할 수 있습니다 b 모든 주요 요인의 경우에만 q 분열 b. 비이성적 인 숫자는 어떤 기지에서도 유한 한 표현이 없습니다.

특히, 합리적 번호 p/q ~와 함께 (p, q) = 1 모든 주요 요인 인 경우에만 이진에서 유한 표현으로 표현 될 수 있습니다. q 분열 2. 즉, 유일한 합리적인 숫자입니다 p/q ~와 함께 (p, q) = 1 이진에 유한 표현이있는 곳은 q = 2^k 음이 아닌 정수의 경우 k. 더욱이, 이러한 모든 합리적 숫자는 이진의 유한 표현으로 표현 될 수있다. 이 숫자는 다음으로 알려져 있습니다 이성적 합리적.

Base 2에서 정확히 표현할 수있는 숫자는 다음과 같습니다. 이성적 합리적. 이것들은 일부 정수 k 및 정수 n에 대해 k/2^n 형식으로 작성 될 수있는 숫자입니다. 해당 양식으로 쓸 수없는 숫자는 기본 2에서 비 터미네이션 표현을 갖습니다.

그러나, 당신은 기본 2에서 어떤 숫자가 표현할 수 있는지에 대해 묻지 않고 오히려 일부 고정 부동산 지점 유형에서 어떤 숫자가 표현되는지 묻는 것 같습니다. float 또는 double. 이것은 더 미묘한 질문입니다. 이디 나디 합리적이지 않은 숫자는 대표 될 수 없지만 모든 이중 합리성도 표현할 수있는 것은 아닙니다.

이것의 모든 정수 k 및 정수 n에 대해 k/2^n으로 표현할 수없는 숫자.

이 모든 숫자를 찾는 쉬운 방법은 2. 3, 5, 7, 11, 13, 17 및 19를 포함하지 않는 일부 소수를 기록하는 것입니다. 2는 포함되지 않은 소수의 좋은 예입니다.

곱하기 시작하십시오. 1/3, 2/3, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7 등

이 작업을 수행하고 형식 k/2^n의 수를 피하면 이진에서 정확하게 표현할 수없는 모든 가능한 비율을 열거합니다.

왼쪽에서 64 비트가 모두 동일 한 숫자에 도달하면 열거하는 것을 중단해야 할 것입니다.

Python 2.4에서 :

>>> 1.0 / 5.0
0.20000000000000001

이는 기본 2가 정확히 표현하는 데 어려움을 겪고 있음을 나타냅니다.

바이너리 (.00011001100110011 ...) == 소수점 (.1)

나는 인피니티에서 찌르기를 할 것입니다

베이스 10으로 정확하게 표현할 수없는 동일한 숫자 세트는 기본 2로 정확하게 표현할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top