• 0151 Math对象:random、round、floor、ceil、abs、max、min、随机整数、案例


    ​ Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。

    属性、方法名 功能
    Math.PI 圆周率
    Math.floor() 向下取整
    Math.ceil() 向上取整
    Math.round() 四舍五入版 就近取整 注意 -3.5 结果是 -3
    Math.abs() 绝对值
    Math.max()/Math.min() 求最大和最小值
    Math.random() 获取范围在[0,1)内的随机值 【左闭右开】

    ​ 注意:上面的方法使用时必须带括号

    获取指定范围内的随机整数

    function getRandom(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min; 
    }
    
            // Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可
            console.log(Math.PI); // 一个属性 圆周率
            console.log(Math.max(1, 99, 3)); // 99
            console.log(Math.max(-1, -10)); // -1
            console.log(Math.max(1, 99, '哈哈')); // NaN
            console.log(Math.max()); // -Infinity
            console.log(Math.min()); // Infinity
    
            // 利用对象封装自己的数学对象  里面有 PI 最大值和最小值
            var myMath = {
                PI: 3.141592653,
                max: function() {
                    var max = arguments[0];
                    for (var i = 1; i < arguments.length; i++) {
                        if (arguments[i] > max) {
                            max = arguments[i];
                        }
                    }
                    return max;
                },
                min: function() {
                    var min = arguments[0];
                    for (var i = 1; i < arguments.length; i++) {
                        if (arguments[i] < min) {
                            min = arguments[i];
                        }
                    }
                    return min;
                }
            }
            console.log(myMath.PI);
            console.log(myMath.max(1, 5, 9));
            console.log(myMath.min(1, 5, 9));
    
            // 1.绝对值方法
            console.log(Math.abs(1)); // 1
            console.log(Math.abs(-1)); // 1
            console.log(Math.abs('-1')); // 隐式转换 会把字符串型 -1 转换为数字型
            console.log(Math.abs('haha')); // NaN 
    
            // 2.三个取整方法
            // (1) Math.floor()   地板 向下取整  往最小了取值
            console.log(Math.floor(1.1)); // 1
            console.log(Math.floor(1.9)); // 1
    
            // (2) Math.ceil()   ceil 天花板 向上取整  往最大了取值
            console.log(Math.ceil(1.1)); // 2
            console.log(Math.ceil(1.9)); // 2
    
            // (3) Math.round() :四舍五入,其他数字都是四舍五入,但 .5 特殊,在中间,它往大了取 
            console.log(Math.round(1.1)); // 1
            console.log(Math.round(1.5)); // 2
            console.log(Math.round(1.9)); // 2
            console.log(Math.round(-1.1)); // -1
            console.log(Math.round(-1.5)); // 这个结果是 -1
    
            // 1.Math对象随机数方法 random():返回一个随机的小数  0 =< x < 1
            // 2. 这个方法里面不跟参数
            // 3. 代码验证 
            console.log(Math.random());
    
            // 4. 我们想要得到两个数之间的随机整数 并且 包含这2个整数
            // Math.floor(Math.random() * (max - min + 1)) + min;
            function getRandom(min, max) {
                return Math.floor(Math.random() * (max - min + 1)) + min;
            }
            console.log(getRandom(1, 10));
    
            // 5. 随机点名  
            var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', '哈哈'];
            // console.log(arr[0]);
            console.log(arr[getRandom(0, arr.length - 1)]);
            // 我加的代码
            for (var i = 0; i < 3; i++) {
                console.log(arr[getRandom(0, arr.length - 1)]);
            }
    
            // 猜数字游戏
            // 1.随机生成一个1~10 的整数  我们需要用到 Math.random() 方法。
            // 2.需要一直猜到正确为止,所以需要一直循环。
            // 3.while 循环更简单
            // 4.核心算法:使用 if  else if 多分支语句来判断大于、小于、等于。
            function getRandom(min, max) {
                return Math.floor(Math.random() * (max - min + 1)) + min;
            }
            var random = getRandom(1, 10);
            while (true) { // 死循环
                var num = prompt('你来猜? 输入1~10之间的一个数字');
                if (num > random) {
                    alert('你猜大了');
                } else if (num < random) {
                    alert('你猜小了');
                } else {
                    alert('你好帅哦,猜对了');
                    break; // 退出整个循环结束程序
                }
    
            }
            // 要求用户猜 1~50之间的一个数字 但是只有 10次猜的机会
    
        // 补充的代码
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        var rand = getRandom(1, 10);
        var num = 0;
        while (num < 3) {
            num += 1;
            var val = prompt('输入数字:');
            if (val > rand) {
                alert('大了');
            } else if (val < rand) {
                alert('小了');
            } else {
                alert('对的');
                break;
            }
        }
    
  • 相关阅读:
    模块化、结构化的代码,何尝不是在讲人生
    DOS操作文件或文件夹
    OSQL
    DOS 命令大全
    Red Tea
    SetInterval_1
    SetInterval
    分库分表——Sharding-Sphere
    线上redis热key问题
    线上redis bgsave导致服务响应延迟
  • 原文地址:https://www.cnblogs.com/jianjie/p/12155564.html
Copyright © 2020-2023  润新知