小數近似值轉換為可能分數
更新日期: 2011年10月10日
程式由網友 3173137 提供,可以計算小數近似值誤差範圍內可能的分數。
注意: 10x是按shift log。
程式 (165 bytes)
Ans→A: ?→A: ?→B: 2→M: ?→M: 1M-:
A - . 5 10x - B→C: 2A - C→D: Lbl 0: Fix 0: 1M+:
CM + . 5: Rnd: Ans≧DM => Goto 0: CM:
Rnd: Ans + (CM>Ans→X: DM: Rnd: Ans - (Ans≧DM→Y:
X=Y => X→A => M→B => Goto 1: Norm 2: X◢ Y◢ M◢
Goto 0: Lbl 1: A÷B - . 5: Rnd: A - BAns→Y: B→A:
Y→B => Goto 1: A - 1 => Goto 0: Norm 2: X◢ M◢ Goto 0
註1: 顯示X及Y表示分子,M表示分母。當出現Y時表示同一個分母有多於一個可能分數,分子可能的值由X至Y的整數。
註2: 輸入的小數為正數,否則計算有可能不成立。
註3: 程式不會自動終止,因為有無限個可能的分數,若要終止程式請按 AC 或 ON。
註4: 程式若在執行中未顯示任何數值答案(X、Y或Z)時按 AC 或 ON終止程式,計算機會保留在小數0位的設定,請自行清除這個設定。
註5: 預設計算的近似值為Ans記憶的數值(之前計算結果),輸入時只要直接 EXE 輸入即可,若是其它數值請自行輸入。
例題: 數值0.5準確至小數1位,試計算這個近似值可能的分數。
按 Prog 1 再按 0.5 EXE (數值) 1 EXE (準確至小數1位)
EXE (輸入開始分母數值,直接按 EXE 則接受預設值2開始,顯示X為1)
EXE (顯示M為2,即第一個可能分數為 1/2)
EXE (顯示X為5) EXE (顯示Y為6,由於出現Y表示分子可能的範圍是 5至6的整數)
EXE (顯示M為11,即第二及第三個可能分為 5/11及6/11)
...............
若要終止程式,請按 AC。