2017-10-12 1 views
-2

답변을 찾으려고 할 때 나는이 사실을 알게되었고 이것이 사실인지, 왜 그런지 궁금해하고있었습니다.십진수가베이스에 유한 표현이 있는지 확인하는 방법에 대한 설명

https://stackoverflow.com/a/489870/5712298

누군가가 나에게 그것을 설명하거나 좋을 것 그것을 설명하는 페이지로 저를 링크 할 수 있습니다.

+0

링크 된 답변에 따라 십진수 값을 _binary 부동 소수점 _에서 정확하게 나타낼 수 있는지 여부가 결정됩니다. _binary_는 자체적으로 모호합니다. 그러한 질문의 제목은 아마도 변화해야 할 필요가 있기 때문에 "_a base_"가 아닌 "_floating point_ representation"에 매우 구체적입니다. – Clifford

+0

링크의 메서드 설명에 오류가 있다고 생각합니다. 내 의견에 추가되었습니다. – Clifford

답변

1

유래 마크 업이 아니라 수학 표기법을 지원하지 않으며,이 중 대부분의 독자는 프로그래머가 될 것입니다, 그래서 일반적인 프로그래밍 표현 구문을 사용하기 위하여려고하고있다 :

* multiplication 
^ exponentiation 
/division 
x[i] Element i of an array x 
== equality 
PROD product 

이 주어진 여부의 문제를 다루는을 r 기수는 분획 a/(r^n) 종단하는 종단 기수 s 똑같은 값 분획 b/(s^m), a, b 정수 rs 양의 정수, 및 nm 음수가 intege rs.

a/(r^n)==b/(s^m)b==a*(s^m)/(r^n)과 같습니다. a/(r^n)은 정확히 인 양수가 존재하는 경우에만 s의 종료 기수와 같습니다. a*(s^m)/(r^n)이 정수입니다.

r, PROD(p[i]^k[i])의 소수 분해를 고려하십시오. i 일부의 경우 p[i]^k[i]r의 소수 분해열 인 경우 p[i]^(n*k[i])r^n의 소수 분해 계수를 사용합니다. r^n의 소인수 분해의 모든 p[i]^(n*k[i])a*(s^m)

먼저 가정하자 p[i]의 요인에 한정해 또한 s의 요인 인 경우

a*(s^m)/(r^n)는 정수입니다. 그러면 충분히 큰 m의 경우 p[i]^(n*k[i])s^m의 요소입니다.

이제 p[i]s의 요소가 아니라고 가정합니다. p[i]^(n*k[i])a의 요소 인 경우에만 a*(s^m)의 인수입니다.

b==a*(s^m)/(r^n)은 정수 m되도록 음이 아닌 정수의 존재를위한 필요 충분 조건은 각 r의 소인수 분해에 p[i]^k[i] 어느 p[i]위한 s 또는 p[i]^(n*k[i])의 계수는 계수이다 있다는 것이다 a입니다. r=10s=2의 일반적인 경우에이 적용

r의 소인수 분해는 (2^1)*(5^1)입니다. 2는 2의 요소이므로 무시할 수 있습니다. 5가 아니기 때문에 5^na 일 수 있습니다.5 일의 요소가 아닙니다,

진수 0.11/10, 그래서 더 정확한 진 부분에 해당이 없습니다 :

는 일부 특정 경우를 생각해 보자.

십진수 0.625, 625/(10^3). 5^3은 625의 요소 인 125이므로 정확한 이진수 분수가 있습니다. (이진수는 0.101입니다.)

참조 된 대답 https://stackoverflow.com/a/489870/5712298의 메서드는 10 진수에서 2 진수로 이와 같습니다. 지수가 1이 아닌 소수 요소를 허용하기 위해 일반적인 경우까지 확장해야하는 작업이 필요합니다.

관련 문제