首頁>Club>
無論哪種語言都可以,主要是要知道一下思路。如果有本身就不限定位數的程式語言就更好了,但不要科學計數法,也請儘量詳細一些。
13
回覆列表
  • 1 # 趙黑臉

    這個問題其實網上已經有很多成熟的解決方案供你參考了。

    個人認為大數計算的問題在於,現有的程式語言提供的自帶型別無法儲存這麼大的資料,而不是無法計算這麼大的資料,因此,解決這種問題,主要是解決如何儲存這種資料,至於計算,非常簡單,也很基礎。以十進位制整數為例說一下吧。對於大數,目前的常用的解決方案是自己封裝基本運算,比如加減乘除。如何做呢?就是將十進位制數字的每一位獨立出來進行運算。從低位一位一位計算,有進位或者借位的就從高一位加一或者健一。常用字串來儲存這樣的大數字。舉個例子。計算123456789123456789+123. 首先將他們轉化為對應的字串形式”123456789123456789”和”123”.然後從最低位開始計算,3+9=12.那麼計算結果最低位為2.並向前進一位。然後計算8+2=10.此時倒數第二位應該為0.但是剛剛最低位還有進位,加上這個進位,此時倒數第二位為1.接著計算倒數第三的和7+1=8.再加上倒數第二位的進位,此時,倒數第三位應該為9. 以此類推,便可以計算完這個大數字的加法了。這個運算的所有運算元儲存在字串中,計算結果也儲存在字串中。而字串的長度理論上是沒有限制的,也就是說這種辦法能支援任意大的數字。這樣,大數問題也就解決了。

    僅僅是一個思路,具體實現,網上也有相應的部落格講解,也有成熟的類庫可以參考。

  • 中秋節和大豐收的關聯?
  • 冰箱變頻和不變頻有什麼區別?