답변을 찾으려고 할 때 나는이 사실을 알게되었고 이것이 사실인지, 왜 그런지 궁금해하고있었습니다.십진수가베이스에 유한 표현이 있는지 확인하는 방법에 대한 설명
https://stackoverflow.com/a/489870/5712298
누군가가 나에게 그것을 설명하거나 좋을 것 그것을 설명하는 페이지로 저를 링크 할 수 있습니다.
답변을 찾으려고 할 때 나는이 사실을 알게되었고 이것이 사실인지, 왜 그런지 궁금해하고있었습니다.십진수가베이스에 유한 표현이 있는지 확인하는 방법에 대한 설명
https://stackoverflow.com/a/489870/5712298
누군가가 나에게 그것을 설명하거나 좋을 것 그것을 설명하는 페이지로 저를 링크 할 수 있습니다.
유래 마크 업이 아니라 수학 표기법을 지원하지 않으며,이 중 대부분의 독자는 프로그래머가 될 것입니다, 그래서 일반적인 프로그래밍 표현 구문을 사용하기 위하여려고하고있다 :
* multiplication
^ exponentiation
/division
x[i] Element i of an array x
== equality
PROD product
이 주어진 여부의 문제를 다루는을 r
기수는 분획 a/(r^n)
종단하는 종단 기수 s
똑같은 값 분획 b/(s^m)
, a
, b
정수 r
및 s
양의 정수, 및 n
m
음수가 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=10
및 s=2
의 일반적인 경우에이 적용
는 r
의 소인수 분해는 (2^1)*(5^1)
입니다. 2는 2의 요소이므로 무시할 수 있습니다. 5가 아니기 때문에 5^n
이 a
일 수 있습니다.5 일의 요소가 아닙니다,
진수 0.1
이 1/10
, 그래서 더 정확한 진 부분에 해당이 없습니다 :
십진수 0.625
, 625/(10^3)
. 5^3
은 625의 요소 인 125이므로 정확한 이진수 분수가 있습니다. (이진수는 0.101입니다.)
참조 된 대답 https://stackoverflow.com/a/489870/5712298의 메서드는 10 진수에서 2 진수로 이와 같습니다. 지수가 1이 아닌 소수 요소를 허용하기 위해 일반적인 경우까지 확장해야하는 작업이 필요합니다.
링크 된 답변에 따라 십진수 값을 _binary 부동 소수점 _에서 정확하게 나타낼 수 있는지 여부가 결정됩니다. _binary_는 자체적으로 모호합니다. 그러한 질문의 제목은 아마도 변화해야 할 필요가 있기 때문에 "_a base_"가 아닌 "_floating point_ representation"에 매우 구체적입니다. – Clifford
링크의 메서드 설명에 오류가 있다고 생각합니다. 내 의견에 추가되었습니다. – Clifford