Math類中floorMod方法源碼解析

                                 Math類中floorMod方法源碼解析

jdk中源碼

if條件語句解釋:若符號相同並且摸部位領,則r--

以上代碼並不難,帶入x,y就可以得出響應的結果,我們這裏主要解釋下,這個方法的設計初衷

源碼解析來源

在《java核心編程卷一》中爲我們提供了一個案例來說明這個這個方法的設計初衷

第11版中P39第二段原文如下(沒有找到11版pdf)

“     下面考慮這樣一個問題:計算一個時鐘時針的位置。這裏要做一個時間調整,而且要歸一化爲一個0~11之間的數。這很簡單:(position + adjustment) % 12”。不過,如果這個調整爲負會怎麼樣呢?你可能會得到一個負數。所以要引入一個分支,或者使用((position + adjustment) % 12+12)%12。不管怎樣都很麻煩。

       floorMod方法就讓這個問題變得容易了:flooraMod(position + adjustment,12)總會得到一個0~11之間的數。”

(很遺憾沒有沒有找到pdf版,所以拍照上傳)

floorMod方法解法

結合《java核心編程卷一》我們茅塞頓開,於是正確的解法呼之欲出:

下面我來圖解說明:

結合上面兩張圖我們來說一下floorMod(x,12)的計算方式

從圖中可以看出,順時針爲數值增加(+),逆時針爲數值減小(-)

若x > 0,順時針查值,若x < 0,逆時針查值

案例:floorMod(1,12) = 1,floorMod(-1,12) = 11

同理,結合下入說明floorMod(x,-12)的計算方式

從圖中可以看出,順時針爲數值減小(-),逆時針爲數值增加(+)

若x > 0,逆時針查值,若x < 0,順時針查值

案例:floorMod(-1,-12) = -1,floorMod(1,-12) = -11

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章