Math数学对象
Math数学对象:专门提供了数学计算的API
强调:不需要创建,直接使用的,由浏览器的JS的解释器自动创建
Math数学对象属性
属性:Math.PI === 3.1415926不需要我们创建的,Math中有它
Math数学对象方法
1.取整
取整:3种
1、上取整:超过一点点,就会取下一个整数 - 现实生活少
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);
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>