###### tags: `JavaScript` `浮點數` # 【學習筆記】JavaScript 的浮點數計算、平方根 [TOC] 最近又開始用 [Codewars](https://www.codewars.com/dashboard) 來練習刷題,也嘗試開一個 Repository:[codewars-challenges](https://github.com/heidiliu2020/codewars-challenges) 記錄作答結果,蠻喜歡這種能夠慢慢升級的感覺,答題結束還能參考其他人的解法,才恍然大悟原來還有更簡潔的思路。 本篇主要整理 JavaScript 常見的內建函式,列表如下: + Math.floor(x):無條件捨去,回傳「小於等於」所給數字的最大整數 + Bitwise NOT (~):位元反向運算子(波浪號) + Math.ceil(x):無條件進位,回傳「大於等於」所給數字的最小整數 + Math.round(x):四捨五入 + toFixed(x):四捨六入五留雙 + Math.sqrt(x):返回一個數的平方根 + Math.abs(x):返回一個數的絕對值 ## [Math.floor(x)](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Math/floor):無條件捨去,回傳「小於等於」所給數字的最大整數 ```javascript= Math.floor(.95); // 0 Math.floor(4); // 4 Math.floor(7.004); // 7 Math.floor(-0.95); // -1 Math.floor(-4); // -4 Math.floor(-7.004); // -8 ``` ## [Bitwise NOT](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_NOT) (`~`):位元反向運算子(波浪號) + Bitwise NOT(`~`)作用是將數字 `x` 轉換為 `-(x + 1)` + Double Bitwise NOT(`~~`):雙位元元反向運算子(兩個波浪號),對正數的作用類似 `Math.floor(x)` 的無條件捨去,但對負數則結果不同 ```javascript= ~10 // -11 ~-10 // 9 ~10.5 // -11 ~-10.5 // 9 ~~10 // 10 ~~-10 // -10 ~~10.5 // 10 ~~-10.5 // -10 ``` ## [Math.ceil(x)](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil):無條件進位,回傳「大於等於」所給數字的最小整數 ```javascript= Math.ceil(.95); // 1 Math.ceil(4); // 4 Math.ceil(7.004); // 8 Math.ceil(-0.95); // -0 Math.ceil(-7.004); // -7 ``` ## [Math.round(x)](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Math/round):四捨五入 ```javascript= Math.round(20.49); // 20 Math.round(20.5); // 21 Math.round(-20.5); // -20 Math.round(-20.51); // -21 ``` ## [toFixed(x)](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed):四捨六入五留雙 + 以字串返回,精確至「小數點後」的數字,小數部分依指定長度補充零 ```javascript= 1.23.toFixed(2); // '1.23' 1.234.toFixed(2); // '1.23' 1.235.toFixed(2); // '1.24' 1.236.toFixed(2); // '1.24' 1.244.toFixed(2); // '1.24' 1.245.toFixed(2); // '1.25' 1.246.toFixed(2); // '1.25' (36).toFixed(4) // '36.0000' ``` ## [Math.sqrt(x)](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt):返回一個數的平方根 ```javascript= Math.sqrt(2); // 1.4142135623730951 Math.sqrt(4); // 2 Math.sqrt(-2); // NaN Math.sqrt(0); // 0 ``` ## [Math.abs(x)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs):返回一個數的絕對值 ```javascript= function difference(a, b) { return Math.abs(a - b); } difference(3, 5); // 2 difference(5, 3); // 2 difference(-5, -3); // 2 ``` ## Reference + [[JS] JavaScript 運算子(Operator)](https://pjchender.dev/javascript/js-operator/) + [JavaScript 四捨五入、無條件捨去、無條件進位](http://www.aua.com.tw/blogger/?Pid=1173) + [使用 JavaScript 的數字時的常見錯誤](https://blog.huli.tw/2022/03/14/javascript-number/)