码迷,mamicode.com
首页 > 编程语言 > 详细

【JavaScript 从零开始】 类型、值、变量----数字

时间:2015-12-28 14:06:16      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

Node.js很是火爆,前段待遇好的飞起。。。。

于是我决定....

重头开始学习JavaScript
有些比较特别的,或者之前我们注意到,

再或者容易出错东西我会记录下来。

 

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!