Tuesday, September 16, 2014

JDK源碼分析&使用--Math.class篇(1)

內容預覽:
・abs(返回絕對值)
・acos(返回反餘弦值)
・addExact(返回參數的總和)
・asin(返回反正弦)


Math.class大概就是這樣的關係吧
螢幕快照 2014-07-06 下午08.18.21
有了^^
先看看api裡的說明吧~
螢幕快照 2014-07-06 下午08.19.18
大概就是就Math.class包含了一些運行基本的數學運算方法,比如:指數,對數,平方根和三角函數。
好吧,現在來看看這個:
螢幕快照 2014-07-06 下午08.20.11
這個double的數值最接近自然對數函數底數–E.
這個double的數值最接近自然對數函數底數–PI.
看這個:
螢幕快照 2014-07-06 下午08.21.25
很接近吧?[笑]
Math.class裡各種的方法[0.O]
螢幕快照 2014-06-29 下午03.37.55螢幕快照 2014-06-29 下午03.38.22
螢幕快照 2014-06-29 下午03.38.36

㕷門就從abs(返回絕對值)開始吧
螢幕快照 2014-06-29 下午03.41.04

再來看源碼
螢幕快照 2014-06-29 下午03.46.48
螢幕快照 2014-06-29 下午03.48.07

最後都會 return (a < 0) ? -a : a; [以int a 為例]
就是說 如果a < 0 , 就回傳 -a , 否則回傳 a.
再以 double a 為例, 如果a <= 0.0 , 就回傳 0.0 – a , 否則回傳 a.
Demo:
螢幕快照 2014-06-29 下午04.04.29
acos(返回反餘弦值)
接著就是acos(返回反餘弦值)囉~甚麼是反餘弦值?就是一種反三角函數啦。
好,偶門就先看看api
static doubleacos(double a)
Returns the arc cosine of a value; the returned angle is in the range 0.0 through pi.
(返回一個值的反餘弦值;返回的角度範圍在0.0到pi。)
再來看源碼
螢幕快照 2014-06-30 下午06.41.52注意到嗎?這是double哦~
Demo:
螢幕快照 2014-07-01 下午06.49.59
然後到addExact(返回參數的總和)
也是先看api~
螢幕快照 2014-07-03 下午03.17.19
再來看源碼:
螢幕快照 2014-07-03 下午03.21.47
嗯,一目了然把[笑]

addExact
注意了沒有?如果出現這樣的情況,就是溢出啦~沒出現就回傳x + yDemo:
呵呵,簡單點來說就是把兩數加上把~
終於到asin(返回反正弦)啦[累死我啦]照舊,先看api(返回一個值的反正弦[一種反三角函數],返回的角度範圍在-pi / 2到pi / 2之間。)
注意:必須是double哦
源碼:
螢幕快照 2014-07-03 下午03.45.27
還算容易的把
不過注意到嗎?只要是一種三角函數,都會使用到StrictMath喲,說不定Math.class看完後就是StrictMath.class嘎~[不過Math.class還有很多啊]

No comments:

Post a Comment