Math:你知道多少呢?

497 阅读2分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。

Math 用于 Number 类型。它不支持 BigInt。

与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI,调用正余弦函数的写法是 Math.sin(x),x 是要传入的参数。

Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。

常用属性

  • Math.PI 圆周率,一个圆的周长和直径之比,约等于 3.14159。

常用方法

需要注意的是,很多 Math 函数都有一个精度,而且这个精度在不同实现中也是不相同的。这意味着不同的浏览器会给出不同的结果,甚至,在不同的系统或架构下,相同的 JS 引擎也会给出不同的结果!

  • Math.abs(x) 返回一个数的绝对值。

  • Math.round(x) 返回四舍五入后的整数。

  • Math.abs(x) 返回一个数的绝对值。

// JS-笔试题 数组元素位置循环左右移动
function move(arr, n) {
  // TODO
  if ( Math.abs(n) > arr.length ) {    n = n % arr.length  }  return arr.slice(-n).concat(arr.slice(0,-n))
  return newArr;
}
var arr = [0, 1, 2, 3, 4, 5];
console.log(move(arr, -2)); // [2, 3, 4, 5, 0, 1]
console.log(move(arr, -1)); // [1, 2, 3, 4, 5, 0]
console.log(move(arr, 1)); // [5, 0, 1, 2, 3, 4]
console.log(move(arr, 2)); // [4, 5, 0, 1, 2, 3]
console.log(move(arr, 3)); // [3, 4, 5, 0, 1, 2]\
  • Math.ceil(x) 返回大于一个数的最小整数,即一个数向上取整后的值。

  • Math.floor(x) 返回小于一个数的最大整数,即一个数向下取整后的值。

// JS笔试 - 有重复数字的升序数组的二分查找
// 用二分法查找在数组中查找指定元素
// 最后返回索引
var arr = [11, 22, 33, 44, 55, 66, 77, 88, 99];
function search(arr, target) {  
    function _search(arr, target, start, end) {    
        let mid = Math.floor(start + (end - start) / 2);    
        if (target === arr[mid]) {      
            return mid;    
        } else if (target > arr[mid]) {      
            return _search(arr, target,  mid + 1, end)    
        } else if (target < arr[mid]) {      
            return _search(arr, target,  0, mid)    
        }    
        return -1;  
    }  
    return _search(arr, target, 0, arr.length)
}
console.log(search(arr, 55)) // 4
console.log(search(arr, 77)) // 6
  • Math.trunc(x) 返回一个数的整数部分,直接去除其小数点及之后的部分。

  • Math.fround(x) 返回最接近一个数的单精度浮点型表示。

  • Math.max([x[, y[, …]]]) 返回零到多个数值中最大值。

  • Math.min([x[, y[, …]]]) 返回零到多个数值中最小值。

  • Math.random() 返回一个 0 到 1 之间的伪随机数。

使用举例:

// JS笔试 实现数组的随机排序
function random(arr) {
  return arr.sort(function () {
    return Math.random() - 0.5;
  });
}
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(random(arr));// (随机排序的数组)