題目: 給乙個有限小數 或者 無限迴圈小數, 用分母最小的方式用分數精確的表達這個數字。 括號中表示迴圈部分,如:
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 #includetypedef
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,然後消去最大...