您現在的位置是:首頁 > 棋牌

C語言實現浮點除法(高精度)

  • 由 趣味程式設計小夥伴 發表于 棋牌
  • 2022-09-02
簡介關注後,手機客戶端點選我的主頁面,右上角有私信,請私信發我:程式設計電腦已經設定好了關鍵詞自動回覆,自動領取就好了

c語言中5除以2等於多少

C語言實現浮點除法(高精度)

要求:由於計算機內部表達方式的限制,浮點運算都有精度問題,為了得到高精度的計算結果,就

需要自己設計實現方法。

(0,1)之間的任何浮點數都可以表達為兩個正整數的商,為了表達這樣兩個數的商,可以將

相除的結果存放在一維陣列中,陣列的每個元素存放一位十進位制數字。即商的第一位存放在

第一個元素中,第二位存放在第二個元素中,以此類推,就可以用陣列來表達一個高精度的

除法結果了。

如 16/19 的結果 0。8421052631。。。就可以依次存放 8、4、2、1、0、5、2、6、3、1。。。在數

組中。

而除法的過程,則可以模仿人工列豎式做除法的方式,先將被除數乘以 10,得到一位商以

後,將餘數乘以 10 作為下一輪計算的被除數:

160/19->8 餘 8

80/19->4 餘 4

。。。 當某次餘數為 0 時,則表明除盡。

現在,請寫一個程式,輸入一個分數,計算出它的小數形式。無論是否可以除盡,輸出最多

小數點後 200 位。

輸入格式:

形如

a/b

的兩個數,其中 10<=a

輸出格式:

形如

0。xxxxxxxxx

的小數,小數點後最多 200 位。輸出結束的時候要帶著回車換行。

輸入樣例:

16/19

輸出樣例:

0。842105263157894736842105263157894736842105263157894736842105263157894

73684210526315789473684210526315789473684210526315789473684210526315789

473684210526315789473684210526315789473684210526315789473684

程式碼如下:

#include int main(int argc, const char * argv[]) { char c; int a,b,d,i=0,n[200]; scanf(“%d%c%d”,&a,&c,&b); a=(a*10)/b; d=(a*10)%b; while (d&&i<=200) { n[i]=a; i++; d=(a*10)%b; if((a*10)/b==0) a=a*10; else a=(a*10)/b; } printf(“0。”); for (i=0; i<200; i++) { printf(“%d”,n[i]); } printf(“\n”); return 0;}

獲取方式:

1。在你手機的右上角有【關注】選項,或點選我的頭像,點選關注!(關注我)

2。關注後,手機客戶端點選我的主頁面,右上角有私信,請私信發我:

程式設計

電腦已經設定好了關鍵詞自動回覆,

自動領取就好了!這幾天上萬個訊息,真的回覆不過來,所以回覆的時候請注意關鍵詞!

其實做為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要這裡請

私信

我“

程式設計

”不管你是小白還是大牛歡迎入住大家一起交流成長。小編會在裡面不定期分享乾貨原始碼,包括我精心整理的一份c++零基礎教程。歡迎各位感興趣的的小夥伴。

學習思路:

C語言實現浮點除法(高精度)

學習資料:

C語言實現浮點除法(高精度)

Top