阅读 828

转行学前端的第 51 天 : 了解 ECMAScript Math对象(一)

我是小又又,住在武汉,做了两年新媒体,准备用 6 个月时间转行前端。

今日学习目标

昨天基于搜索来基础学习 Global 对象中的编码方法和eval方法。今天主要是基于搜索来基础学习 Math对象属性和基础方法,又是适合学习的一天,加油,小又又!!!!


今日学习概要

  • Math对象属性
  • min()和max()
  • 舍入方法(ceil(),round(),floor())

Math对象属性

属性名 属性说明
Math.E 欧拉常数,也是自然对数的底数,约等于 2.718。
Math.LN2 2 的自然对数,约等于 0.693。
Math.LN10 10 的自然对数,约等于 2.303。
Math.LOG2E 以 2 为底的 E 的对数,约等于 1.443。
Math.LOG10E 以 10 为底的 E 的对数,约等于 0.434。
Math.PI 圆周率,一个圆的周长和直径之比,约等于 3.14159。
Math.SQRT1_2 二分之一 ½ 的平方根,同时也是 2 的平方根的倒数12,约等于 0.707。
Math.SQRT2 2 的平方根,约等于 1.414。

min()和max()

min()

基础语法

Math.min([value1[,value2, ...]]) 
复制代码

参数说明

  • value1, value2, ...

一组数值


返回值说明

给定数值中最小的数。

如果没有参数,结果为Infinity

如果任一参数不能转换为数值,则返回NaN


详细说明

Math.min() 返回零个或更多个数值的最小值。

由于 minMath 的静态方法,所以应该像这样使用:Math.min(),而不是作为你创建的 Math 实例的方法(Math 不是构造函数)。


案例

下例找出 x 和 y 的最小值,并把它赋值给 z

var x = 10, y = -20;
var z = Math.min(x, y);
复制代码

max()

基础语法

Math.max(value1[,value2, ...]) 
复制代码

参数说明

  • value1, value2, ...

一组数值


返回值说明

返回给定的一组数字中的最大值

如果没有参数,则结果为 - Infinity

如果给定的参数中至少有一个参数无法被转换成数字,则会返回 NaN


详细说明

Math.max() 函数返回一组数中的最大值。

由于 maxMath 的静态方法,所以应该像这样使用:Math.max(),而不是创建的 Math 实例的方法(Math 不是构造函数)。


案例

Math.max(10, 20);   //  20
Math.max(-10, -20); // -10
Math.max(-10, 20);  //  20
复制代码

舍入方法

ceil()

基础语法

Math.ceil(x)
复制代码

参数说明

  • x

一个数值。


返回值说明

大于或等于给定数字的最小整数。

如果给定的参数无法被转换成数字,则会返回 0


详细说明

Math.ceil() 函数返回大于或等于一个给定数字的最小整数。


案例

// Closure
(function() {
  /**
   * Decimal adjustment of a number.
   *
   * @param {String}  type  The type of adjustment.
   * @param {Number}  value The number.
   * @param {Integer} exp   The exponent (the 10 logarithm of the adjustment base).
   * @returns {Number} The adjusted value.
   */
  function decimalAdjust(type, value, exp) {
    // If the exp is undefined or zero...
    if (typeof exp === 'undefined' || +exp === 0) {
      return Math[type](value);
    }
    value = +value;
    exp = +exp;
    // If the value is not a number or the exp is not an integer...
    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
      return NaN;
    }
    // Shift
    value = value.toString().split('e');
    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
    // Shift back
    value = value.toString().split('e');
    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
  }

  // Decimal round
  if (!Math.round10) {
    Math.round10 = function(value, exp) {
      return decimalAdjust('round', value, exp);
    };
  }
  // Decimal floor
  if (!Math.floor10) {
    Math.floor10 = function(value, exp) {
      return decimalAdjust('floor', value, exp);
    };
  }
  // Decimal ceil
  if (!Math.ceil10) {
    Math.ceil10 = function(value, exp) {
      return decimalAdjust('ceil', value, exp);
    };
  }
})();

// Round
Math.round10(55.55, -1);   // 55.6
Math.round10(55.549, -1);  // 55.5
Math.round10(55, 1);       // 60
Math.round10(54.9, 1);     // 50
Math.round10(-55.55, -1);  // -55.5
Math.round10(-55.551, -1); // -55.6
Math.round10(-55, 1);      // -50
Math.round10(-55.1, 1);    // -60
// Floor
Math.floor10(55.59, -1);   // 55.5
Math.floor10(59, 1);       // 50
Math.floor10(-55.51, -1);  // -55.6
Math.floor10(-51, 1);      // -60
// Ceil
Math.ceil10(55.51, -1);    // 55.6
Math.ceil10(51, 1);        // 60
Math.ceil10(-55.59, -1);   // -55.5
Math.ceil10(-59, 1);       // -50
复制代码

round()

基础语法

Math.round(x) 
复制代码

参数说明

  • x

一个数值。


返回值说明

给定数字的值四舍五入到最接近的整数。


详细说明

Math.round() 函数返回一个数字四舍五入后最接近的整数。

如果参数的小数部分大于 0.5,则舍入到相邻的绝对值更大的整数。 如果参数的小数部分小于 0.5,则舍入到相邻的绝对值更小的整数。如果参数的小数部分恰好等于0.5,则舍入到相邻的在正无穷(+∞)方向上的整数。

注意,与很多其他语言中的round()函数不同,Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)。

因为 round()Math 的静态方法,你应该直接使用 Math.round(),而不是作为你创建的 Math 对象的一个实例方法来使用(Math没有构造函数)。


案例

x = Math.round(20.49);   //20
x = Math.round(20.5);    //21
x = Math.round(-20.5);   //-20
x = Math.round(-20.51);  //-21

复制代码

floor()

基础语法

Math.floor(x) 
复制代码

参数说明

  • x

一个数字。


返回值说明

一个表示小于或等于指定数字的最大整数的数字。


详细说明

Math.floor() 返回小于或等于一个给定数字的最大整数。

由于 floorMath 的一个静态方法,你总是应该像这样使用它 Math.floor(),而不是作为你创建的一个Math对象的一种方法(Math不是一个构造函数)。


案例

Math.floor( 45.95); 
// 45 
Math.floor( 45.05); 
// 45 
Math.floor( 4 ); 
// 4 
Math.floor(-45.05); 
// -46 
Math.floor(-45.95); 
// -46
复制代码

今日学习总结


今日心情

今天主要是基于搜索来学习 Math对象属性和基础方法, 希望明天学到更多的内容~~~~

本文使用 mdnice 排版

文章分类
前端
文章标签