JavaScript对象:Math、日期

任务描述

本关任务:练习使用Math类的常用方法。

相关知识

Math用于进行数学计算,没有构造函数。

常用的数

一些常用的无理数的表示方法:

表示意义约等于
Math.Ee2.718
Math.PI圆周率3.14
Math.SQRT22的平方根1.414
Math.LN22的自然对数0.693
 
  1. console.log(Math.PI);//输出3.141592653589793
  2. console.log(Math.pi == 3.141592653589793);//true
  3. console.log(Math.pi == 3.14);//false

向上取整

Math.ceil(x)实现向上取整,返回大于等于x且离x最近的整数。

 
  1. console.log(Math.ceil(1.1));//输出2
  2. console.log(Math.ceil(1));//输出1
  3. console.log(Math.ceil(-1.1));//输出-1

向下取整

Math.floor(x)返回小于等于x且离x最近的整数。

 
  1. console.log(Math.floor(1.1));//输出1
  2. console.log(Math.floor(1));//输出1
  3. console.log(Math.floor(-1.1));//输出-2

随机数

Math.random()返回01之间的一个随机数,包含0不包含1

 
  1. console.log(Math.random());//输出0.1493135392665863

平方根

Math.sqrt(x)返回x的平方根。

 
  1. Math.sqrt(4);//2
  2. Math.sqrt(2);//1.4142135623730951

四舍五入

Math.round(x)返回x四舍五入后的整数。

 
  1. Math.round(1.5);//2
  2. Math.round(1.49);//1

求最值

Math.max(x1,x2,....xn)返回参数的最大值,参数个数不限;

 
  1. Math.max(1,2,34,100);//100
  2. Math.max(-1,-2,-34,-100);//-1

Math.min(x1,x2,....xn)返回参数的最小值;

 
  1. Math.min(1,2,34,100);//1
  2. Math.min(-1,-2,-34,-100);//-100

其余方法

Math还有很多的方法,如下面的表格所示:

方法作用
Math.abs(x)求x的绝对值
Math.pow(x,y)计算x的y次幂
Math.exp(x)e的x次方
Math.log(x)x以e为底的对数
Math.sin(x)x的正弦
Math.cos(x)x的余弦
Math.tan(x)x的正切
Math.asin(x)x的反正弦
Math.acos(x)x的反余弦
Math.atan(x)x的反正切(-PI/2到PI/2之间)
Math.atan2(y,x)x轴到点(x,y)的角度 (-PI/2到PI/2之间)

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 计算参数a向上取整、向下取整、四舍五入、平方根、正弦的结果,返回这些结果的最大值和最小值的和;

  • 具体请参见后续测试样例。

测试说明

测试过程:

  • 平台将读取用户补全后的MathClass.js

  • 调用其中的mainJs()方法,并输入若干组测试数据;

  • 接着根据测试后的输出判断程序是否正确。

以下是测试样例:

测试输入: 4 预期输出: 3.2431975046920716

 

function mainJs(a) {
    a = parseInt(a);
	//请在此处编写代码
	/********** Begin **********/
      return Math.min(Math.ceil(a),
    Math.floor(a),
    Math.round(a),
    Math.sqrt(a),
    Math.sin(a))+Math.max(Math.ceil(a),
    Math.floor(a),
    Math.round(a),
    Math.sqrt(a),
    Math.sin(a))
	/********** End **********/
}


第2关:Date类

任务描述

本关任务:练习时间日期工具类的使用。

相关知识

Date类用于处理日期和时间。

构造函数

Date(x)的参数x可以有四种情况:

 
  1. new Date();//无参数,返回当前时间
  2. new Date(millseconds);//参数为距离1970年1月1日8时0分0秒0毫秒的毫秒数,返回对应的时间
  3. new Date(timeString);//参数为时间字符串,返回这个时间字符串对应的时间
  4. new Date(year,month,day,hour,minute,second,millsecond);//参数为整数序列,分别表示年、月、日、时、分、秒、毫秒,返回这些时间参数对应的一个特定的时间

以上均返回一个对应的时间对象,如下:

 
  1. console.log(new Date());//输出Sat Apr 07 2018 18:56:00
  2. console.log(new Date(1000));//输出Thu Jan 01 1970 08:00:01
  3. console.log(new Date("April 7, 2018 18:00:00"));//输出Sat Apr 07 2018 18:00:00
  4. console.log(new Date(2018,4,7,18,0,0,0));//输出Mon May 07 2018 18:00:00

时间对象有一系列获取和设置年、月、日、时、分、秒、毫秒的函数。

获取和设置年月日

为举例方便,我们先定义一个时间。

 
  1. //1970年1月1日上午8点0分0秒
  2. var date = new Date(0);
  • x.getFullYear()返回x对应的四位数年份,xDate类对象;
 
  1. console.log(date.getFullYear());//输出1970
  • setFullYear(year,month,day)用于设置年份,monthday可选;
 
  1. date.setFullYear(2017);
  2. console.log(date);//输出Sun Jan 01 2017 08:00:00
  • x.getMonth()返回x中的月份,结果在0(一月)到11(十二月)之间;
 
  1. console.log(date.getMonth());//输出0
  • setMonth(month,day)作用是设置月份,0表示一月。1表示二月,依次类推,day可选;
 
  1. date.setMonth(2);
  2. console.log(date);//输出Sun Mar 01 1970 08:00:00
  • x.getDate()返回x对象在一个月的第几天(131),x.getDay()返回x对象在一个星期的第几天(06,0为周日);
 
  1. console.log(date.getDate());//输出1
  2. console.log(date.getDay());//输出4

由此可见,197011号那个美好的新年第一天是个周四。

  • setDate(day)设置日期对象在一个月的第几天(131);
 
  1. date.setDate(31);
  2. console.log(date.getDate());//输出31

获取和设置时分秒

获取和设置时、分、秒、毫秒的函数在形式上与上面的函数几乎相同,这里以表格的形式列出:

方法作用参数或者结果的范围
getHours()获取小时0~23
setHours(hour,min,sec,millsec)设置小时023、059、059、0999
getMinutes()获取分钟0~59
setMinutes(min,sec,millsec)设置分钟059、059、0~999
getSeconds()获取秒钟0~59
setSeconds(sec,millsec)设置秒钟059、0999
getMillSeconds()获取毫秒数0~999
setMillSeconds(millsec)设置毫秒数0~999
getTime()获取距1970年1月1日8时0分0秒的毫秒数大于等于0
setTime(millsec)设置距1970年1月1日8时0分0秒的毫秒数大于等于0

注:以上多个参数的函数,除了第一个参数外的参数都为可选。

日期转字符串

toString()将日期转字符串,结果类似于Sun Jan 07 2018 20:01:14 GMT+0800 (中国标准时间),分别表示星期、月份、天数、年份、小时、分钟、秒和时区(中国采用东八区时间)。

 
  1. console.log(new Date().toString());//输出Sat Apr 07 2018 20:40:14 GMT+0800 (中国标准时间)

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • date是一个时间对象,求出date对应的年份,月份(0表示一月),一个月第几天(1表示第一天),星期几(0表示周日,1表示周一);

  • 拼接这些结果(以,隔开)组成一个字符串并返回该字符串;

  • 具体请参见后续测试样例。

测试说明

测试过程:

  • 平台将读取用户补全后的DateClass.js

  • 调用其中的mainJs()方法,并输入若干组测试数据;

  • 接着根据测试后的输出判断程序是否正确。

以下是测试样例:(注:我们的测试用服务器是Linux,所以日期的字符串格式和相关知识中介绍的有细微区别,学员不用考虑)

测试输入: 0 预期输出: 1970,0,1,4

 

function mainJs(a) {
    a = parseInt(a);
    var date = new Date(a);
    /*********Begin*********/
   
     var b=date.getFullYear();
     var c=date.getMonth();
     var d=date.getDate();
     var e=date.getDay();
      
    
      return b+","+c+","+d+","+e;
    /*********End*********/
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值