标签:
Node.js很是火爆,前段待遇好的飞起。。。。
于是我决定....
重头开始学习JavaScript
有些比较特别的,或者之前我们注意到,
再或者容易出错东西我会记录下来。
JavaScript 还自称更加复杂的算术运算,这些复杂的运算通过作为Math对象的属性定义的函数和常量来实现:
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.log(10) // 10的自然对数 Math.log(100)/ Math.LN10 // 以10为底100的对数 Math.log(512)/Math.LN2 // 以2为底512的对数 Math.exp(3) // e的三次幂
JavaScript采用可IEEE-754浮点数表示法(几乎所有现代变成语言所采用),
这是一种二进制表示法,可以精确地表示分数,比如 1/2、1/8 和1/1024.遗憾的是,
我们常用的分数(特别是在金融计算方面)都是十进制分数1/10、1/100等。
二进制浮点表示法并不能精确表示似0.1这样的数字。
JavaScript 中的数字具有足够的精度,并可以及其近似于0.1.但事实是,数字不能精确表述的确带来了一些问题。
看下这段代码:
var x=.3-.2 ; //30美分减去20美分 var y=.2-.1 ; //20美分减去10美分 x==y //=>false : 两个值不相等! x==1 //=>false : .3-.2 不等于.1 y==1 //=>true : .2-.1 等于.1
由于舍入误差,0.3和0.2之间的近似差值实际上并不等于0.2和0.1之间的近视差值。
注释:在JavaScript的真是运行环境中,0.3-0.2=0.099 999 999 999 999 98
这个问题不只在JavaScript中才会出现,理解这一点非常重要:
在任何使用二进制浮点数的编程语言中都会有这个问题。
同样要注意的是,上述代码中x和y的值非常接近彼此和最终的正确值。
这种计算结果可以胜任大多数的计算任务:这个问题也只有在比较两个值是否相等的时候才会出现。
JavaScript的未来版本或许会支持十进制数字类型以避免这些舍入问题。在这之前你可能更愿意只用大整数进行重要的金融计算。
例如,要使用整数 "分 " 不要使用小数 "元 “进行基于货币单位的运算。
在计算的时候,还请大家少用小数,也就是说当有金额为 1.6元的时候 请用16分表示。
【JavaScript 从零开始】 类型、值、变量----数字
标签:
原文地址:http://www.cnblogs.com/178mz/p/5081719.html