五、数学(Math)对象
1、使用数学对象
JavaScript的数学对象提供了大量的数学常数和数学函数,使用时不需要用关键字new而可以直接使用Math对象。
2、数学对象的属性与方法
数学对象的属性
属 性 | 数 学 意 义 | 值 |
E | 欧拉常量,自然对数的底 | 约等于2.7183 |
LN2 | 2的自然对数 | 约等于0.6931 |
LN10 | 10的自然对数 | 约等于2.3026 |
LOG2E | 2为底的e的自然对数 | 约等于1.4427 |
LOG10E | 10为底的e的自然对数 | 约等于0.4343 |
PI | ∏ | 约等于3.14159 |
SQRT1_2 | 0.5的平方根 | 约等于0.707 |
SQRT2 | 2的平方根 | 约等于1.414 |
数学对象的方法
方 法 | 意 义 | 示 例 |
abs(x) | 返回x的绝对值 | abs(2) 结果为2,abs(-2)结果为2 |
acos(x) | 返回某数的反余弦值(以弧度为单位)。x在-1至1范围内 | acos(1) 结果为0 |
asin(x) | 返回某数的反正弦值(以弧度为单位) | asin(0.5) 结果约为0.5236 |
atan(x) | 返回某数的反正切值(以弧度为单位) | atan(1) 结果约为0.7854 |
ceil(x) | 返回与某数相等或大于该数的最小整数 | ceil(-15) 结果为-15 ceil(-15.6) 结果为-15 ceil(15.2) 结果为16 ceil(15) 结果为15 |
cos(x) | 返回某数(以弧度为单位)的余弦值 | cos(Math.PI*2/6) 结果为0.5 |
exp(x) | 返回e的x次方 | exp(2) 结果约为7.389 |
floor(x) | 与ceil相反,返回与某数相等或小于该数的最小整数 | floor(-15) 结果为 -15 floor(-15.6) 结果为 -16 floor(15.2) 结果为 15 floor(15) 结果为15 |
log(x) | 返回某数的自然对数(以e为底) | log(Math.E) 结果为1 |
max(x,y) | 返回两数间的较大值 | max(1,3) 结果为3 |
min(x,y) | 返回两数间的较小值 | min (1,3) 结果为1 |
pow(x,y) | 返回x的y次方 | pow(2,3) 结果为8 |
random() | 返回0和1之间的一个伪随机数 |
|
round(x) | 返回某数四舍五入之后的整数 | round(3,4) 结果为3 |
sin(x) | 返回某数(以弧度为单位)的正弦值 | sin(Math.PI/6) 结果为0.5 |
sqrt(x) | 返回某数的平方根 | sqrt(9) 结果为3 |
tan(x) | 返回某数的正切值 | tag(Math.PI/4) 结果为1 |
toFixed(x) | 返回某数四舍五入之后保留x位小数 | var num1=1204.238; num1.toFixed(2) 结果为1204.24 |
toPrecision(x) | 返回某数四舍五入之后保留x位字符 | var num1=1204.238; num1. toPrecision (2) 结果为1204.2 |
3、特殊的常数和函数
(1)常数NaN和函数isNaN(x)
在使用JavaScript数学对象的过程中,当得到的结果毫无意义时,JavaScript将返回一个特殊的值NaN,表示“不是一个数(Not a Number)”。
(2)常数Infinity和函数isFinite(x)
JavaScript还有一个特殊的常数叫做Infinity,表示“无限”。
x1 = 3/0; x2 = -3/0 x1的值是Infinity x2的值是 –Infinity
JavaScript用于测试是否是有限数的函数叫做isFinite(x)
4、格式化数字
格式化数字的不同效果
格 式 要 求 | 显 示 效 果 |
无格式要求 | 1204.6237 |
保留2位小数 | 1204.62 |
保留3位小数 | 1204.624 |
保留6位小数 | 1204.623700 |
百分数(%) | 120462.37 |
千分位符 | 1,204.6237 |
为数字添加千分位符原理图
例5-1 为数字添加千分位符
目的:格式化数字
<script language="JavaScript">
function formatFloat(inputString) {
inputString = new String(inputString);
//如果有小数点,leftLen为整数的长度。如果没有小数点,leftLen为输入数的长度
var leftLen = inputString.indexOf(".")>-1?inputString.indexOf("."):inputString.length;
var leftString = inputString.substring(0,leftLen); //整数内容
var rightString = inputString.substring(leftLen); //小数点及以后的内容
var firstLen = leftLen % 3; //第一个千分位在整数长度取模的位置
var ret = ""; //最后结果放在变量ret中
var pos = firstLen;
ret = ret + leftString.substring(0,pos); //第一个千分位之前的内容
while(pos + 3 <= leftString.length) { //每3个数字加一个千分位符
if(ret != "") {
ret = ret + ",";
}
ret = ret + leftString.substring(pos,pos + 3);
pos = pos + 3;
}
return(ret + rightString);
}
document.write(formatFloat(12345678.123));
</script>
例5-2 产生拼写单词试题。例如对于英文单词instruction,产生3字符拼写in_tru_ti_n
目的:数学对象中随机方法的应用
<script language = "JavaScript">
function fillString(inputString,n) {
//ret是返回的字符串变量
var ret = inputString;
var count = 0;
while (count < n) {
//从输入的字符串中得到一个随机字符,如果不是"_",则用"_"代替
var rnum = Math.floor(Math.random()*inputString.length);
if(ret.substring(rnum,rnum + 1) != "_") {
ret = ret.substr(0,rnum) + "_," + ret.substr(rnum + 1);
count++;
}
}
return ret;
}
document.write(fillString("instruction",3) + "<br>");
document.write(fillString("communication",5) + "<br>");
document.write(fillString("study",3) + "<br>");
</script>
六、日期(Date)对象
1、新建日期对象
使用new关键字创建日期对象,可以用以下4种方法
new Date(); new Date(日期字符串);
new Date(年,月,日[,时,分,秒,毫秒]); new Date(毫秒);
如果使用“日期字符串”作为参数,其格式可以使用Date.parse()方法识别的任何一种表示日期、世间的字符串。例如,”April 10,2003”,”12/24/1988 16:12:20”,”Sat Sep 18 09:22:28 EDT 2004”等。
2、日期对象的属性与方法
日期对象除了作为对象所具有的constructor和prototype属性外没有其他属性。
日期对象除了作为对象所具有的toString() 和toSource()外,其他属性见下表(部分列出)
日期对象的方法 var DD = new Date();
日期对象方法语法规则 | 意 义 | 时 区 |
DD.getDate() | 返回整数,表示日期对象月份中的日期数(1~31) | 计算机指定时区 |
DD.getDay() | 返回整数,表示日期对象中的星期数,0表示星期日,6表示星期六 | 计算机指定时区 |
DD.getMonth() | 返回整数,表示日期对象中的月份数,0表示1月,1表示2月… | 计算机指定时区 |
DD.getFullYear() | 返回4位整数,表示日期对象中的年。用该方法代替使用getYear()方法 | 计算机指定时区 |
DD.getYear() | 返回两位整数,表示日期对象中的年(避免使用该方法) | 计算机指定时区 |
DD.getHours() | 返回整数,表示日期对象中的小时数(0~23) | 计算机指定时区 |
DD.getMinutes() | 返回整数,表示日期对象中的分钟数(0~59) | 计算机指定时区 |
DD.getSeconds() | 返回整数,表示日期对象中的秒数(0~59) | 计算机指定时区 |
DD.getMilliseconds() | 返回整数,表示日期对象中的毫秒数(0~999) | 计算机指定时区 |
DD.getTime() | 返回整数,表示自1970年1月1日 0:0:0:起的毫秒数 | 计算机指定时区 |
DD.getTimezoneOffset() | 返回整数,表示计算机设定时区与格林尼治标准时间相差的分钟数 | 格林尼治标准时间 |
DD.getUTCDate() | 与getDate()意义相同,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCDay() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCMonth() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCFullYear() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCHours() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCMinutes() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCSeconds() | ……,只是表示时区不同 | 格林尼治标准时间 |
DD. getUTCMilliseconds() | ……,只是表示时区不同 | 格林尼治标准时间 |
Date.parse(日期字符串) |
| 计算机指定时区 |
DD.setDate(日期数) |
| 计算机指定时区 |
DD.setFullYear(年[,月,日]) |
| 计算机指定时区 |
DD. setHours(小时[,分,秒,毫秒]) |
| 计算机指定时区 |
DD. setMilliseconds(毫秒) |
| 计算机指定时区 |
DD. setMinutes(分[,秒,毫秒]) |
| 计算机指定时区 |
DD. setMonth(月,日) |
| 计算机指定时区 |
DD. setSeconds(秒[,毫秒]) |
| 计算机指定时区 |
DD. setTime(总毫秒数) |
| 计算机指定时区 |
DD. setYear() | 设置日期对象中的年数,如果位数小于等于两位,则年份表示19XX | 计算机指定时区 |
DD. setUTCDate() |
| 格林尼治标准时间 |
DD. set UTCDay() |
| 格林尼治标准时间 |
DD. set UTCMonth() |
| 格林尼治标准时间 |
DD. set UTCFullYear() |
| 格林尼治标准时间 |
DD. set UTCHours() |
| 格林尼治标准时间 |
DD. set UTCMinutes() |
| 格林尼治标准时间 |
DD. set UTCSeconds() |
| 格林尼治标准时间 |
DD. set UTCMilliseconds() |
| 格林尼治标准时间 |
DD. toUTCString() | 将日期对象转换成格林尼治标准时间的日期字符串 | 格林尼治标准时间 |
DD. toLocaleString() | 将日期对象转换成当地时区的日期字符串 | 计算机指定时区 |
Date.UTC(年,月,日[,时,分,秒,毫秒]) |
| 格林尼治标准时间 |