내 HP의 분수 표시하자 당신이 분수 표시에 대한 몇 가지 모드를 설정합니다
최대 분모를 설정합니다. 표시된 소수부는 내부 부동 소수점 값에 가장 가까운 n/d
이고 d은 최대 값을 초과하지 않습니다. 예를 들어 최대 값을 10으로 설정하면 pi의 부동 소수점 숫자는 분수 22/7
에 가장 가깝습니다. 그러나 최대 값이 1000 인 경우 가장 가까운 분수는 355/113
입니다.
정확한 분모를 설정하고 결과를 줄입니다. 표시된 분수는 d이 정확한 분모와 같은 내부 부동 소수점 값에 가장 가까운 n/d
입니다. n을 계산하면 분수는 최대 공통 분모로 감소합니다. 예를 들어, 분모가 32로 고정되면 부동 소수점 수 0.51은 16/32
에 가장 근접하며 1/2
으로 감소합니다. 마찬가지로, 부동 소수점 수 0.516은 기각되지 않는 17/32
에 가장 가깝습니다.
정확한 분모를 설정하고 결과를 줄이지 마십시오. 예를 들어, 0.51은 환원되지 않은 부분 인 16/32
으로 표시됩니다.
최대 분모 접근법의 알고리즘은 continued fractions을 사용합니다. Python의 예제를 따르기 쉬운 것은 http://hg.python.org/cpython/file/2.7/Lib/fractions.py#l206의 limit_denominator 메소드에서 찾을 수 있습니다.
정확한 분모 접근법은 더 쉽습니다. 분모가 d이고 부동 소수점 숫자가 x 인 경우 분자는 가장 가까운 정수로 반올림 한 d * x
입니다. 그런 다음 n/d
을 계산하여 greatest common divisor.
을 줄여서 원래의 부동 소수점 숫자를 표시된 분수로 바꿀 수 있습니다 (선택 사항). 이것을 그리드에 스냅이라고합니다. 이렇게하면 0.333을 입력하여 인 정확히 인 분수를 만들 수 있습니다. 1/3
입니다. 이렇게하면 반올림하지 않고 정확한 분수 연산을 수행 할 수 있습니다.
희망 사항이 답변을 통해 모든 것을 지울 수 있습니다 .--) 어떤 부분에 정교화 나 추가 설명이 필요한지 알려주세요.
단순한 것은 아닙니다. 부정확 한 숫자를 분수로 유지하십시오. –
corsiKa
Windows 계산기는 아무 것도하지 않습니다. 결과가 1에 충분히 가깝기 때문에 IEEE 부동 소수점 숫자에서 1로 반올림됩니다. –