C語言如何將小數轉化為分數,不用約分

時間 2021-07-02 22:10:09

1樓:Vukr

題主既然要求"不用約分", 那看來就是想用下面這種方式來轉化了:

這兩步可以這麼操作:

#include

#include

intmain

()int

molecule=(

int)

molecule_f

;printf

("%f = %d/%d\n"

,num

,molecule

,denominator

);//約分

intmax

;int

min;if(

molecule

>denominator

)else

inthcf

=max

%min

;while

(hcf

)molecule

=molecule

/min

;denominator

=denominator

/min

;printf

("%f = %d/%d\n"

,num

,molecule

,denominator);}

實際上有另一種方式來實現轉化, 那就是借助連分數[1][2]來作為中間橋梁.

連分數可以這麼來求:

使用乙個鍊錶來儲存這個連分數(C沒有動態陣列):

#include

#include

struct

node

;void

swap

(int*a

,int*b

)// 小數 -> 連分數

struct

node

*decimal2ContinuedFraction(double

num,

intprecision

)num=1

/(num-

integerPart

);times++;

}return

head;}

// 連分數 -> 分數

void

continuedFraction2Fraction(struct

node

*array

,int

*molecule

,int

*denominator

)struct

node*p

=tail;*

molecule=1

;*denominator=p

->data

;while(p

->before

->before

!=NULL

)swap

(molecule

,denominator);}

intmain

()程式中實際使用的鍊錶是有乙個頭結點的.

第一種做法有個問題, 如果num是自己輸入的數還沒什麼區別, 但是下面這種情況就出問題了, 題主可以試一試(逃

srand

((unsigned

)time

(NULL

));double

num=

(double

)rand()/

(double

)RAND_MAX

;......

而第二種方式的結果是一步步逼近的, 所以就不會出現狗屎的情況.

jquery 中如何將陣列轉化為json字串,然後再轉化回來?

w stone jQuery中沒有提供這個功能,所以你需要先編寫兩個jQuery的擴充套件 fn.stringifyArray function arrayreturn JSON.stringify arrayfn.parseArray function arrayreturn JSON.parse...

Python如何將字串式列表轉化為可以操作的列表

海闊and天空 方式1 給a加上引號,然後使用eval轉化格式不就行啦,注意字串外雙內單或外單內雙 str1 1,2,a 2,4 6 print str1 print type str1 list1 eval str1 print list1 print type list1 檢視物件型別 執行結果...

如何將交流電轉化為直流電

推薦一本書模擬電子技術基礎,這個裡面有講解。交流轉化為直流,需要整流,主要是利用二極體的單向導電性,簡單介紹下面兩種方式 1,半波整流電路 L在正半週期時D1 D2正向偏置,電流從L經過D1,R1,D2到NL 在負半週期時D1 D2反向偏置,無電流整流前後電壓對比,只有半個週期被整流成直流2,橋式整...