2026年8月31日 星期一

關於 Number.toPrecision()

 關於 Number.toPrecision()

前言

  在之前的 修正 Number 的小數位數 修正 Number 的小數位數,還有另一個跟它功能相似的 Number.toPrecision() ,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Math.PI.toPrecision(2) );//3.1
console.log( Math.PI.toPrecision(5) );//3.1416
//
let num = 1234;
console.log( num.toPrecision(2) );//1.2e+3


Number.toPrecision() 的用法跟 Number.toFixed() ,引數一樣是輸入要修正的位數,兩者的差別是對精度的為數計算不一樣, Number.toFixed()  只計算小數的位數,而 Number.toPrecision() 把整數與小數的部分都計算。範例第一例的結果 3.1 是因為只有兩位數,第二例的結果 3.1416 和Number.toFixed() 的理由一樣,小數的末位會四捨五入,最後,如果位數不足以顯示整數的時候會用指數的方式來表示。


參考資料

[ developer.mozilla.org ] Number.prototype.toPrecision()


相關文章與資料

修正 Number 的小數位數


2026年8月24日 星期一

修正 Number 的小數位數

 修正 Number 的小數位數

前言

  最近發現 JavaScript 有自帶可以修正小數位數的 Function ,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Math.PI );//3.141592653589793
console.log( Math.PI.toFixed(2) );//3.14
console.log( Math.PI.toFixed(4) );//3.1416


使用 Number 自帶的 toFixed() 就可以修正小數的位數,引數是要修正的位數。範例使用 Math.PI ,透過修正 2 位數得到 3.14 ,在來修正 4 位數得到 3.1416,而不是 3.1415 ,因為會四捨五入,而且這個特性是改不掉的!這點一定要注意。


參考資料

[ developer.mozilla.org ] Number.prototype.toFixed()

2026年8月17日 星期一

關於 Number 的整數有效值

 關於 Number 的整數有效值

前言

  最近才知道原來 Number 在表達整數時會有有效值的範圍,超出去的時候是不會有任何警告的,不過有提供相關函數來檢查,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Number.MAX_SAFE_INTEGER );//9007199254740991
console.log( Number.MAX_SAFE_INTEGER + 100);//9007199254741092
//
console.log( Number.isSafeInteger( Number.MAX_SAFE_INTEGER ) );//true
console.log( Number.isSafeInteger( Number.MAX_SAFE_INTEGER + 1) );//false
//
console.log( Number.MIN_SAFE_INTEGER );//-9007199254740991


Number 的最大有效值可以透過 Number.MAX_SAFE_INTEGER 來檢查,可以看到當範例對  Number.MAX_SAFE_INTEGER 加 100 後的結果是不正確的!也就是當超過有效值的範圍後勢不保證結果正確的!要確認是否為有效值可以透過 Number.isSafeInteger() 來確認。有 Number.MAX_SAFE_INTEGER  當然就有 Number.MIN_SAFE_INTEGER ,它其實就是 Number.MAX_SAFE_INTEGER 乘上負號。


參考資料

[ developer.mozilla.org ] Number.MAX_SAFE_INTEGER

2026年8月10日 星期一

關於 Math.Max() 與 Math.min()

 關於 Math.Max() 與 Math.min()

前言

  找出陣列的最大或最小值是很常見的需求,但如果直接從陣列找必須透過排序或用迴圈來完成,有簡短的方式完成嗎?答案是肯定的,那就是 Math.Max() 與 Math.min() ,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Math.min( 1 , 2 , 3 ) );//1
console.log( Math.max( 1 , 2 , 3 ) );//3
//
let ar = [ 1111 , 5555 , 9999 ];
console.log( Math.min( ...ar) );//1111
console.log( Math.max( ...ar) );//9999


Math.Max() 與 Math.min() 的使用方法很簡單,只要將所有的數值輸入到引數就好,Math.Max() 會回傳最大的數值, Math.min() 會回傳最最小的數值。Math.Max() 與 Math.min() 本身並不不支援直接輸入陣列來得到結果,所以如果要取得陣列的最大或最小要透過 ... 來陣列分解後輸入。


參考資料

[ developer.mozilla.org ] Math.min()

[ developer.mozilla.org ] Math.max()

2026年8月3日 星期一

關於 Math.trunc()

 關於 Math.trunc()

前言

  最近發現 Math.trunc() 可以直接處理掉小數的部分,而且不用管正負數都是直接保留整數,仔此把學習的過程做個紀錄。


內容

  範例如下

console.log( Math.trunc( 12.33 ) );//12
console.log( Math.trunc( -99 ) );//-99
console.log( Math.trunc( -12.33 ) );//-12


用起來跟 Math.floor() 、 Math.ceil() 與 Math.round() ,但她使用時不需考慮正負數,都是直接保留整數,用起來直覺且簡單。


參考資料

[ developer.mozilla.org ] Math.trunc()

2026年7月27日 星期一

關於 Math.sumPrecise()

 關於 Math.sumPrecise()

前言

  Math.sumPrecise() 看說明是為了解決連續加浮點數造成的誤差問題,但實際用起來似乎有些問題,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Math.sumPrecise( [0.1, 0.2] ) );//0.30000000000000004
console.log( Math.sumPrecise( [0.1, 0.2, 0.3] ) );//0.6
console.log( Math.sumPrecise( [0.1, 0.2, 0.3, 0.4 ] ) );//1.0
//
let ar1 = [0.1, 0.2];
let ar2 = [0.1, 0.2, 0.3];
let ar3 = [0.1, 0.2, 0.3, 0.4];
console.log( ar1.reduce((a, b) => a + b, 0) );0.30000000000000004
console.log( ar2.reduce((a, b) => a + b, 0) );0.6000000000000001
console.log( ar3.reduce((a, b) => a + b, 0) );1


Math.sumPrecise() 的用法很簡單,引數只支援輸入一個陣列,並不支援多個引數的輸入,透過回傳值取得加完後的結果,範例分別示範了三種狀況,但在第一個狀況就發生有精度的問題!而且這個狀況是符合規格的,在 [ developer.mozilla.org ] Math.sumPrecise() 有說這是合理的結果,所以使用 Math.sumPrecise() 還是有精度的問題要解決,算是只解決一半,最後範例分別把三種狀況使用直接加的方式呈現,可以跟開始的三個示範做比較。


  感覺 Math.sumPrecise() 並不可靠,問題只解決一半,也許日後的版本會解決這個問題,現在還是不建議使用。


參考資料

[ developer.mozilla.org ] Math.sumPrecise()

2026年7月20日 星期一

關於 Chrome 的首頁綁架

 關於 Chrome 的首頁綁架

前言

  最近 Chrome 被首頁綁架了!不知是不是上次 關於 Daemon tool lite 無法解除安裝的問題 的後遺症,在此把解決的過程做個紀錄。


內容

  最近發現在 Chrome 的網址列檔非網址的內容,都會被強制轉到 Yahoo 搜尋,用其它瀏覽器搜尋解大概找到了把 Chrome 還原設定,操作如下圖

Chrome 還原設定 

本想這樣操作就可以結束綁架,但結果是不行!


  接著看以下影片教學


移除首頁綁架教學


裡面的重點是要刪除暫存資料夾的資料,可以用參考下圖

打開暫存資料夾


打開後刪除全部的資料,刪完後還在再次把 Chrome 還原設定,結果就結束 Chrome 的綁架。


  Chrome 不知是何時被綁架的,很可能是上次的 關於 Daemon tool lite 無法解除安裝的問題 連同附帶的效果,不過我也懶得證明是不是安裝後會被綁架,因為不想再次安裝該流氓軟體。


相關文章與資料

關於 Daemon tool lite 無法解除安裝的問題