JavaScript day012

156 阅读2分钟

Math数学对象

Math数学对象:专门提供了数学计算的API

强调:不需要创建,直接使用的,由浏览器的JS的解释器自动创建

Math数学对象属性

属性:Math.PI  === 3.1415926不需要我们创建的,Math中有它

Math数学对象方法

1.取整

取整:31、上取整:超过一点点,就会取下一个整数 - 现实生活少
var num=Math.ceil(num);
			
			
2、下取整:无论超过多少,都会省略掉小数部分 - 现实生活少
var num=Math.floor(num);

			
3、四舍五入取整:
var num=Math.round(num);//进制只看小数的第一位

以上三个都是垃圾:都是在取整,只能取整

取整的方式:以上三个+parseInt(str)+*num.toFixed(d)
个人最推荐:*num.toFixed(d),
优点:可以四舍五入保留指定的小数位数
缺点:返回的结果是一个字符串,建议搭配上parseFloat一起使用

笔试题

<script>
鄙视题:
不允许使用toFixed的情况下,自己封装一个函数,实现toFixed的功能,并且最后返回一个数字
看用户提供的数字和保留几位小数,对着用户的这个数字 * 10几次方(保留几位小数),再使用Math.round四舍五入取整
对着这个数字 / 10几次方(保留几位小数) */
        
     function f1(num, d) {
            num *= 10 ** d;
            num = Math.round(num)//四舍五入取整
            num /= 10 ** d;
            return num;
        }
        var result = f1(Math.PI, 3)
        console.log(result);
</script>

2.乘方和开方

乘方:Math.pow(底数,幂) === 底数**幂
开平方:Math.sqrt(num)

3.绝对值

绝对值:把负数转为正数
Math.abs(num);

4.最大值和最小值

最大值和最小值:
var max/min=Math.max/min(a,b,c,d,e,f,g,....);

问题:本身不支持数组参数的
*解决:固定用法:

var max/min=Math.max/min.apply(Math,arr);
apply其中一个功能是可以将数组打散为单个元素

*5.随机整数

***随机整数:Math.random() - 在0~1之间取出一个随机的小数,可能取到0,但是绝对不可能取到1,
意味着可能取到最小数,但是不可能取到最大数
公式:parseInt(Math.random()*(max-min+1)+min);

其实还提供了三角函数,但是我们不会学习,因为我们也不会用到

Date日期对象

创建:4种

1.*创建一个当前日期时间:

	var now=new Date();

2.*创建一个自定义时间:

	var birth=new Date("yyyy/MM/dd hh:mm:ss");

3.创建一个自定义时间:

	var birth=new Date(yyyy,MM,dd,hh,mm,ss);
		//修正月份:从0开始的,0->11月

4.*复制一个日期:

	为什么:日期的所有的API都是直接修改原日期的,无法获得修改之前的日期
	所以,在执行API之前先进行复制,然后在对复制的日期进行操作
	var end=new Date(start);

放学倒计时案例

<body>
		<h1>距离放学还有:<span id="time"></span></h1>
		
		<script type="text/javascript">
			getTime();
			
			setInterval(function(){
				getTime();
			},500)
			
			
			
			function getTime(){
				var now=new Date();
				var end=new Date("2022/11/1 21:00:00");
				var h=parseInt((end-now)/1000/3600);
				h<10&&(h="0"+h);
				var m=parseInt((end-now)/1000%3600/60);
				m<10&&(m="0"+m);
				var s=parseInt((end-now)/1000%60);
				s<10&&(s="0"+s);
				
				time.innerHTML=time.innerHTML.indexOf(":")==-1?h+":"+m+":"+s:h+" "+m+" "+s;
			}

		</script>
	</body>