2種解法 分數轉化為小數形式

2021-10-02 07:18:24 字數 1459 閱讀 6440

給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字串形式返回小數。

如果小數部分為迴圈小數,則將迴圈的部分括在括號內。

示例 1:

輸入: numerator = 1, denominator = 2

輸出: 「0.5」

示例 2:

輸入: numerator = 2, denominator = 1

輸出: 「2」

示例 3:

輸入: numerator = 2, denominator = 3

輸出: 「0.(6)」

思路:直接使用數值相除進行求解,如果不夠除就乘以10,然後結果補0,不過為了防止溢位使用了long。

把負數轉換為正數進行求解,如果是異號,給結果字串增加負號

先對整數部分求解,整數部分直接相除後把字串結果儲存起來

小數部分,每次使用字典記錄分子出現過的索引位置,如果分子再次出現則表示是迴圈小數,那麼再分子上一次出現的位置和字串結尾插入括號

public

class

solution

n %= m;

if(n >0)

nidx.

add(n, r.count)

; n *=10

; nchild = n/m;

r.add(

(char

)(nchild +

'0'));

if(nchild >0)

}}return

string

.join(""

,r.toarray()

);}}

思路:邏輯跟解法一完全一樣,編碼上做了下面的優化或調整

使用線性表list代替字典dictionary

使用負數代替分母的long,負數可以防止溢位

異號判斷使用異或運算,整數部分最後再合併到結果中

如果沒有小數部分,直接返回,將後面一大段從if中解放出來

public

class

solution

//小數部分

while

(n !=0)

nlist.

add(n)

; n *=10

; nchild =

(int

)( n/m)

; r.

add(

(char

)(nchild +

'0'));

if(nchild >0)

}return strflag + str +

"."+

string

.join(""

,r.toarray()

);}}

**:

迴圈小數轉化為分數

眾所周知迴圈小數是可以轉化為分數的。把迴圈小數轉化為分數一般用極限的方法,比如0.33333.可以看成是0.3 0.03 0.003 這個等比數列的值,然後求等比數列的和,設有n個數,則根據等比數列公式得和為0.3 1 0.1 n 1 0.1 化簡得 1 0.1 n 3,n為無限多個,n趨於無窮大時...

微信小程式轉化為uni app專案

使用指南 由於該專案需要使用npm包管理工具安裝對應的專案包,而npm是隨同nodejs一起安裝的包管理工具,所以接下來我們只需要把node.js安裝配置好即可。node.js 安裝配置詳細教程 使用cmd進入對應的資料夾輸入 npm init命令即可 因為這個包是工具,要求全域性都能使用,所以需要...

微信小程式轉化為uni app專案

思維導航 使用指南 由於該專案需要使用npm包管理工具安裝對應的專案包,而npm是隨同nodejs一起安裝的包管理工具,所以接下來我們只需要把node.js安裝配置好即可。node.js 安裝配置詳細教程 1使用cmd進入對應的資料夾輸入 npm init命令即可 因為這個包是工具,要求全域性都能使...