一個有理數怎麼轉成最小的兩個整數的比值?
修改了一下問題描述:
有沒有一個公式可以計算出構成一個有理數的最小的兩個整數?比如0.2857142857142857可以看做2857142857142857/10000000000000000,但也可以寫成2/7。
最後如果兩個整數不行,可以考慮多個整數,原則是任意一個有理數通過最少最小的數字表示出來,運算符號不限。不知道存不存在通用的方法?
這個東西叫做丟番圖逼近:
Diophantine approximation?en.wikipedia.org
實現有理逼近需要用道連分數相關理論,題主可以找一本規範的數論教材,裡面應該都有講。想親自操作一下的話可以在mathematica裡面實現,有 函數是現成的;當然學會之後自己實現一下也不是很困難。
實際上丟番圖逼近理論遠不僅僅是用來解決逼近問題的,對於它有很多深刻的(令人禿頂的)研究,尤其是數論相關,有興趣可以自行google一下。甚至對於題主的問題,我們可以把有理逼近搞到有理多項式逼近上去,那就叫做帕德逼近:
Padé approximant?en.wikipedia.org可以在mathematica裡面一下用 函數來體驗一下,如果自己寫的話似乎也不是很難(但是我沒寫過這個)。
,其中
如果時計算機中的浮點數:
一般浮點數會被表示成:
直接根據存儲各式讀出來
有,分類來處理
第一類:有限小數,其他答主已經說了直接加一個1的分子,然後乘以10的n次方就行
第二類:無限循環小數,比如你的0.285714285714...(285714上打點,表示循環節)
處理步驟如下: