2 6 精確表達浮點數

2021-09-06 05:35:36 字數 634 閱讀 9675

任何乙個無限迴圈小數或有限小數都可以表示為分數的形式。

(1)有限小數

假設為a.b1b2b3b4b5

我們可以表示為:

a+(b1b2b3b4b5)/10^5;

(2)無限迴圈小數

假設為a.b1b2b3b4b5b6(c1c2c3c4)

a.b1b2b3b4b5b6(c1c2c3c4) = ab1b2b3b4b5b6.(c1c2c3c4)/10^6;                  (1)

另ab1b2b3b4b5b6 = x;  0.c1c2c3c4 =y;

對y而言:

0.(c1c2c3c4)= y ;

0.(c1c2c3c4) = c1c2c3c4.(c1c2c3c4)/10^4

即:y×10^4= c1c2c3c4+y;

所以:y = c1c2c3c4/(10^4-1);

再把y帶入到(1)中,即可求得x的表示式:

下一步是怎樣求解分子分母的最大公約數?

//c++求最大公約數

//碾除法

#include using namespace std;

void main()

cout<

程式設計之美 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,然後消去最大...