程式設計之美 2 6 精確表達浮點數

2021-09-08 15:43:23 字數 659 閱讀 8104

1. 簡述

簡單的說就是將有限迴圈小數和無限迴圈小數轉化為分數形式。比如:

0.9 = 9/10

0.333(3) = 1/3,其中括號表示迴圈節。

2. 思路

書上的方法就是分情況討論。

首先是有限迴圈小數,比如123.456,整數部分123不用說了,主要是小數部分0.456,直接轉化為456/1000,然後消去最大公因子即可。

其次是無限迴圈小數,比如123.4(56),整數部分123同樣不用解決,主要是迴圈小數部分0.4(56),首先把小數部分拆為非迴圈和迴圈兩個部分,注意非迴圈部分比如在迴圈部分之前(這個很顯然),即0.4 + 0.0(56),其中非迴圈部分0.4直接轉化為4/10,0.0(56)的處理需要遞推公式消減一下:0.0(56)*100 = 5.6(56) = 5.6 + 0.0(56), 0.0(56) = 5.6 / 99 = 56 / 990。推導迴圈節的過程,主要就是將迴圈節乘上迴圈節的位數,即對於(56),乘100,對於(456)乘1000,乘後,等式兩邊的迴圈節部分就能夠因式分解了,提出迴圈節,並且計算之。

基本上就是這樣了,關於最大公因子的求解,下一節,也就是2.7節就是討論這個問題。一般簡單的話,輾轉相除法就行。 

3. **

省略了。

4. 參考

程式設計之美,2.6節,精確表達浮點數。

程式設計之美 2 6 精確表達浮點數

本題目內容如下 在計算機中,有時使用float或double來儲存小數是不能得到精確值的.如果你需要得到精確計算結果,最好是用分數形式來表示小數。有限小數或者無限迴圈小數都可以轉化為分數。eg 0.9 9 10 0.33 3 1 3 括號裡的數字表示的的是迴圈節 當然乙個小數可以用好幾種弄分數形式來...

程式設計之美 2 6 精確表達浮點數

題目 給乙個有限小數 或者 無限迴圈小數,用分母最小的方式用分數精確的表達這個數字。括號中表示迴圈部分,如 0.3 0.3 3 0.3 0 思路 我一看,傻眼了,想了兩下不想想了,就在網上找迴圈小數轉分數,結果居然是小學奧賽題!我鬱悶的很啊.拿 1.2 34 來舉例子吧 1.2 34 10 12.3...

程式設計之美 2 6 精確表達浮點數

題目 給乙個有限小數 或者 無限迴圈小數,用分母最小的方式用分數精確的表達這個數字。括號中表示迴圈部分,如 0.3 0.3 3 0.3 0 思路 我一看,傻眼了,想了兩下不想想了,就在網上找迴圈小數轉分數,結果居然是小學奧賽題!我鬱悶的很啊.拿 1.2 34 來舉例子吧 1.2 34 10 12.3...