《JS权威指南学习总结--3.1数字》
3.1数字
内容要点:
一.数字直接量:当一个数字直接出现在JS程序中,我们称之为数字直接量。
二.JS中的算术运算
Math.pow(2,53) // => 9007199254740992: 2 的 53次幂
Math.round(.6) // => 1.0: 四舍五入
Math.ceil(.6) // => 1.0: 向上求整 Math.floor(.6) // => 0.0: 向下求整 Math.abs(-5) // => 5: 求绝对值 Math.max(x,y,z) // 返回最大值 Math.min(x,y,z) // 返回最小值 Math.random() // 生成一个大于等于0小于1.0的伪随机数 Math.PI // π: 圆周率 Math.E // e: 自然对数的底数 Math.sqrt(3) // 3的平方根 Math.pow(3, 1/3) // 3的立方根 Math.sin(0) // 三角函数: 还有Math.cos, Math.atan等 Math.log(10) // 10的自然对数 Math.log(100)/Math.LN10 // 以10为底100的对数 Math.log(512)/Math.LN2 // 以2为底512的对数 Math.exp(3) // e的三次幂var then = new Date(2011, 0, 1); // 2011年1月1日
var later = new Date(2011, 0, 1, 17, 10, 30);// 同一天, 当地时间5:10:30pm, var now = new Date(); // 当前日期和时间 var elapsed = now - then; // 日期减法:计算时间间隔的毫秒数 later.getFullYear() // => 2011 later.getMonth() // => 0: 从0开始计数的月份 later.getDate() // => 1: 从1开始计数的天数 later.getDay() // => 5: 得到星期几, 0代表星期日,5代表星期一 later.getHours() // => 当地时间17: 5pm later.getUTCHours() // 使用UTC表示小时的时间,基于时区 x==y; //返回false两个值不相等
这个问题在任何二进制浮点数的编程语言中都会出现。
计算没有问题,但比较两个数的时候需要注意。
四.四舍五入问题和toFixed()方法:
1.注意toFixed是number方法,下面这个是不能用的
错误示例:
var a=10.005;
a.toFixed(2);
alert(a); =>10.005
需要将其转换为number类型:
正确示例:
var a=10.005;
var num=Number(a).toFixed(2);
alert(num); =>10.01
取两位小数:
var b=13.005;//13.01
var c=13.015;//13.02
var d=13.025;//13.03
var f=13.035;//13.04
var g=13.045;//13.04
var h=13.055;//13.05
var j=13.065;//13.06
var k=13.075;//13.07
var l=13.085;//13.08
var z=13.095;//13.10
console.log(Number(b).toFixed(2));//13.01
console.log(Number(c).toFixed(2));//13.02
console.log(Number(d).toFixed(2));//13.03
console.log(Number(f).toFixed(2));//13.04
console.log(Number(g).toFixed(2));//13.04
console.log(Number(h).toFixed(2));//13.05
console.log(Number(j).toFixed(2));//13.06
console.log(Number(k).toFixed(2));//13.07
console.log(Number(l).toFixed(2));//13.09
console.log(Number(z).toFixed(2));//13.10
//重写toFixed方法
Number.prototype.toFixed=function(len)
{
var tempNum = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(s1.substr(start+len+1,1)>=5)
tempNum=1;
//计算10的len次方,把原数字扩大它要保留的小数位数的倍数
var temp = Math.pow(10,len);
//求最接近this * temp的最小数字
//floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数
s = Math.floor(this * temp) + tempNum;
return s/temp;
};

浙公网安备 33010602011771号