iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 16

想轉職的鯊魚從零基礎開始學習JavaScript Day-16 The Number Type數字(二)

  • 分享至 

  • xImage
  •  

前言

非常抱歉昨天鯊魚提到了有關Number內容的有一部分有理解錯誤,這邊做一下修正
Number有分兩個部分一個是Number Constructor(數字的建構式)另一個是數字ToObject(物件化)之後擁有的屬性
Number Constructor(數字的建構式)是一些環境預設的值
所以呼叫的時候以Number建構式的方式做呼叫
而當Number想要呼叫Number原型物件的method(),就會自動ToObject(物件化),好呼叫原型物件中method()
昨天理解錯誤跟實際狀況差太多跟各位客官說聲對不起,勇敢的鯊魚會不斷的從錯誤中成長,不斷的成長茁壯,然後繼續的向前邁進,讓我們一起前進吧!一起來學習跟數字有關的Math Object。
鯊魚道歉

The Math Object

The Math Object是全域內建的物件,裡面有常用的數學常數及函式。

Math只能用在Number,無法運用在BigInt。

Value Properties of the Math Object(Math的各種常數)

  • Math.E
    數學的常數e(Euler's number/自然底數)
    其值接近2.7182818284590452354
  • Math.LN10
    ln10(自然對數10)
    其值接近2.302585092994046
  • Math.LN2
    ln2(自然對數2)
    其值接近0.6931471805599453
  • Math.LOG10E
    log(e)(以10為底的對數e)
    其值接近0.4342944819032518
  • Math.LOG2E
    log2(e)(以2為底的對數e)
    其值接近1.4426950408889634
  • Math.PI
    圓周率π
    其值接近3.1415926535897932.
  • Math.SQRT1_2
    1/2的平方根
    其值接近0.7071067811865476.
  • Math.SQRT2
    2的平方根(根號2)
    其值接近1.4142135623730951.
  • Math [ @@toStringTag ]
    ※ 延伸閱讀:@@toStringTag
    依據ECMA的解釋: A String valued property that is used in the creation of the default string description of an object.用一個物件去描述他的預設型態。
    鯊魚的理解就是可以用這個知曉其原型物件是什麼。
    使用方法有兩種(如下)
Math.toString()
'[object Math]'
Object.prototype.toString.call(Math)
'[object Math]'

Function Properties of the Math Object

這邊基本都是以數字做計算的,如果輸入的參數不是數字就會回傳NaN。

  • Math.abs ( x )
    回傳x的絕對值
  • Math.acos ( x )
    回傳arccos(x),反三角函數的運用
  • Math.acosh ( x )
    回傳arccosh(x)反雙曲函數的運用
  • Math.asin ( x )
    回傳arcsin(x),反三角函數的運用
  • Math.asinh ( x )
    回傳arcsinh(x)反雙曲函數的運用
  • Math.atan ( x )
    回傳arctan(x),反三角函數的運用
  • Math.atanh ( x )
    回傳arctanh(x),反雙曲函數的運用
  • Math.atan2 ( y, x )
    回傳atan2(y,x),正切函數tan一個變種運用
    Wiki-atan2
  • Math.cbrt ( x )
    x的立方根(x^(1/3))
  • Math.ceil ( x )
    x無條件進位至整數位。
  • Math.clz32 ( x )
    將x轉換成2進位32位元,之後回傳前面0的數量
  • Math.cos ( x )
    回傳cos(x),三角函數的運用
  • Math.cosh ( x )
    回傳cosh(x),雙曲函數的運用
  • Math.exp ( x )
    經驗值計算
    回傳e(自然底數)的x次方
  • Math.expm1 ( x )
    回傳e(自然底數)的x次方減一,也就是Math.exp(x) - 1
  • Math.floor ( x )
    x無條件捨去至整數位。
  • Math.fround ( x )
    將x以從雙經度浮點數(64位元)轉換成32-bit single precision(32位元單精度)的數表達。
    先前提到,數字是以雙經度浮點數的方式儲存,但是有些時候你會需要32位元的精度(EX:Float32Array),此時就要用fround去轉換精度。
  • Math.hypot ( ...args )
    ※ ...args 表示參數數量不固定,可以是0、1、2、3...個
    將參數使用Pythagorean addition處理,即是把參數個別平方後加總再進行一次開根號,如下圖表示:
    Pythagorean addition
  • Math.imul ( x, y )
    將x,y兩個數轉換成32位元之後相乘,主要用於AsmJS環境,正常狀況下不建議使用,因為透過imul去運算開銷會比較大(必須從浮點數轉乘32位元,相乘完之後再轉回浮點數)
  • Math.log ( x )
    回傳ln(x)
  • Math.log1p ( x )
    回傳ln(x+1),即是上面的log(x + 1)
  • Math.log10 ( x )
    回傳log(x)
  • Math.log2 ( x )
    回傳log2(x)
  • Math.max ( ...args )
    回傳...args之中最大的參數,如果没有參數,則回傳-Infinity。
  • Math.min ( ...args )
    回傳...args之中最小的參數,如果没有參數,則回傳Infinity。
  • Math.pow ( base, exponent )
    回傳base(底數)^exponent(指數),看下面實作
    Math.pow(2,5),則回傳2^5 即是32
  • Math.random ( )
    回傳0至1之間的一個亂數。
  • Math.round ( x )
    x四捨五入
  • Math.sign ( x )
    將x的正負狀況透過1跟-1回傳,如果是0則回傳0,-0則回傳-0
  • Math.sin ( x )
    回傳sin(x),三角函數的運用
  • Math.sinh ( x )
    回傳sinh(x),雙曲函數的運用
  • Math.sqrt ( x )
    x的平方根
  • Math.tan ( x )
    回傳tan(x),三角函數的運用
  • Math.tanh ( x )
    回傳tanh(x),雙曲函數的運用
  • Math.trunc ( x )
    回傳x的整數部分,小數點後全捨棄

結語

數字的用法就這些,有沒有覺得一些很高深呢!尤其是一些三角函數的部分,除非是要計算特別的值,不然一般來說不太會用到的,所以不需要太緊張。
只要有印象,用的時候就能回想起有這些方法,可以不需要用原始的方式去做計算了,更能省下時間跟精力。

參考資料

EMCA262
wiki-e
wiki-Atan2
wiki-Pythagorean addition
MDN-Math


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-15 The Number Type數字(一)
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-17 The Global Object (全域物件)
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言