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

2022-05-18 10:30:17 字數 1092 閱讀 6707

題目: 給乙個有限小數 或者 無限迴圈小數, 用分母最小的方式用分數精確的表達這個數字。 括號中表示迴圈部分,如:

0.3  , 0.3(3), 0.3(0)

思路:我一看,傻眼了,想了兩下不想想了,就在網上找迴圈小數轉分數,結果居然是小學奧賽題!我鬱悶的很啊.....

拿 1.2(34)來舉例子吧

1.2(34) * 10 = 12.34343434...

1.2(34) * 1000 = 1234.3434...

1.2(34) * 1000  - 1.2(34) * 10 = 1234 - 12

990 * 1.2(34) = 1222

1.2(34) = 1222 / 990

然後再約分,分子分母同時除以他們的最大公約數就好了。

**輸入是用字串輸入的,需要判斷是否有迴圈節和迴圈節是否為0

#include #include 

typedef

struct

fraction

fraction;

//返回num * 10^pow

int tens(int num, int

pow)

return

num;}//

輾轉相除求最大公約數

int mod(int num1, int

num2)

}fraction getfractionexperssion(

char * in

)

else

if(*tmpin == '.'

)

else

if(*tmpin == '('

)

else

if(*tmpin == ')'

)

else

tmpin++;

}//處理沒有()的情況

if(!bhasloop)

if(withloop == 0) //

本身不是迴圈小數

else

//是迴圈小數

}int

main()

程式設計之美 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 精確表達浮點數

1.簡述 簡單的說就是將有限迴圈小數和無限迴圈小數轉化為分數形式。比如 0.9 9 10 0.333 3 1 3,其中括號表示迴圈節。2.思路 書上的方法就是分情況討論。首先是有限迴圈小數,比如123.456,整數部分123不用說了,主要是小數部分0.456,直接轉化為456 1000,然後消去最大...