zoukankan      html  css  js  c++  java
  • Math数学函数

    Math数学函数

    Math是数学常数属性和数学函数方法,Math不是一个函数对象,它只用于Number类型,不支持BigInt

    与其它全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。

    属性

    Math.PI			// 圆周率,一个圆的周长和直径之比,约等于 3.14159
    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.SQRT2		// 2 的平方根,约等于 1.414
    Math.SQRT1_2	// 二分之一的平方根,约等于 0.707
    

    方法

    常用方法

    Math.max(x1,x2,...n)	// 最大值  取数组中最大元素 Math.max(...[1,2,3])或Math.max.apply(null, [1,2,3])
    Math.min(x1,x2,...n)	// 最小值
    Math.random()	// 0~1之间的伪随机数
    Math.round(x)	// 四舍五入后的整数
    Math.floor(x)	// 向下取整 返回小于或等于一个数
    Math.ceil(x)	// 向上取整	返回大于一个数的最小整数
    Math.trunc(x)	// 保留整数部分,去掉小数部分
    Math.abs(x)		// 绝对值
    

    三角函数方法

    sin()、cos()、tan()、asin()、acos()、atan()
    Math.asin(x)	// 反正弦值
    Math.acos(x)	// 反余弦值
    Math.acosh(x)	// 反双曲余弦值
    

    其他方法

    Math.imul(x, y)		// 32位整数乘法的结果
    Math.sign(x)		// 返回一个数的符号,得知一个数是正数、负数还是0  负数返回-1  正数返回1  零返回0
    Math.pow(x, y)		// x的y次幂
    Math.sqrt(x)		// x的平方根
    Math.cbrt(x)		// x的立方根
    Math.fround(x)		// 返回最接近一个数的单精度浮点型表示。
    Math.clz32(x)		// 返回一个 32 位整数的前导零的数量。
    

    案例

    随机数生成算法

    随机生成字符串

    const str = Math.random().toString(36).substr(2) // 随机生成字符串
    

    先是 Math.random() 生成 [0, 1) 的数,也就是 0.123312、0.982931之类的,然后调用 numbertoString 方法将其转换成 36 进制的,按照 MDN 的说法,36 进制的转换应该是包含了字母 a~z 和 数字 0~9 的,因为这样生成的是 0.89kjna21sa 类似这样的,所以要截取一下小数部分,即从索引 2 开始截取 10 个字符就是我们想要的随机字符串了。

    // 得到两个数之间的随机数
    function getRandom(min, max) {
      return Math.random() * (max - min) + min;
    }
    // 得到两个数之间的随机整数
    function getRandom(min, max) {
      min = Math.ceil(min);
      max = Math.floor(max);
      return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
      // return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
    }
    

    Math.random() 不能提供像密码一样安全的随机数字。不要使用它们来处理有关安全的事情。使用Web Crypto API 来代替,采用更精确的window.crypto.getRandomValues() 方法

    高精度比较

    二进制数字32位和64位表示 会存在精度不一致,在某些精度不高的场合下,可以通过将二个浮点数转换成32位浮点数进行比较,以解决64位浮点数比较结果不正确的问题:

    0.1 + 0.2 == 0.3;    //false
    function equal(v1, v2) {
        return Math.fround(v1) == Math.fround(v2);
    }
    equal(0.1 + 0.2, 0.3);   //true
    
  • 相关阅读:
    Element ui 的使用
    Vue基本介绍
    静态界面传值javascript
    手机网页怎么禁止缩放、拖放、如何屏蔽到手机本身键盘
    jQuery学习之prop和attr的区别示例介绍
    jquery复选框 选中事件 及其判断是否被选中
    手机端html5触屏事件(touch事件)
    页面滚动到底部自动 Ajax 获取文章
    转Python RegEx正则
    转Python 日期
  • 原文地址:https://www.cnblogs.com/hllive/p/15776049.html
Copyright © 2011-2022 走看看