当前位置:首页 > 日记 > 正文

JavaScript基本类型值-Number类型

JavaScript基本类型值-Number类型

大致介绍

在JavaScript的内部采用IEEE754格式来表示数字,所以不区分整数和浮点数,都是用64位浮点数的形式储存。就是说,在JavaScript内部,就根本没有小数。但是有些运算必须得需要整数完成,所以JavaScript有时会把64位的浮点数转换成32位的整数,再进行运算。

整数

JavaScript对整数提供四种表示方法:

1、二进制:有前缀0b的数值,出现0,1以外的数字会报错

2、八进制:有前缀0o的数值,或者是以0后面再跟一个数字(0-7)。如果超出了前面所述的数值范围,则会忽略第一个数字0,视为十进制数

注意:八进制字面量在严格模式下是无效的,会导致支持该模式的JavaScript引擎抛出错误

3、十六进制:有前缀0x,后跟任何十六进制数字(0~9及A~F),字母大小写都可以,超出范围会报错

4、十进制

var num2 = 0b11; console.log(num2); //3 var num2 = 0b12; console.log(num2); //报错 var num8 = 0o76; console.log(num8); //02 var num8 = 0o78; console.log(num8); //报错 var num16 = 0x2a; console.log(num16); //42 var num16 = 0x2h; console.log(num16) //报错

浮点数

所谓浮点数,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。与整数不同,浮点数只能用十进制来表示

浮点数的精度远远不如整数,所以设计浮点数的运算好比较要小心

例如:

 console.log(0.1 + 0.2 == 0.3); //false 0.30000000000000004 console.log(0.6/0.2); //2.9999999999999996

科学计数法

对于那些极大极小的数值,可以用e表示法(即科学计数法)表示的浮点数值表示。用e表示法表示的数值等于e前面的数值乘以10的指数次幂

以下两种情况,JavaScript会自动将数值转为科学计数法表示,其他情况都采用字面形式直接表示。

1、小数点前的数字多余21位

 console.log(1234567890123456789012);// 1.2345678901234568e+21 console.log(123456789012365648787); //123456789012365660000 

2、小数点后面的0多余5位

 console.log(0.0000006);//6e-7 console.log(0.000006); //0.000006

数值范围

由于内存的限制,ECMAScript并不能保存世界上所有的数值,所以就有了最大值和最小值

最小值保存在Number.MIN_VALUE中,这个值是5e-324

最大值保存在Number.MAX_VALUE,这个值是1.7976931348623157e+308

 console.log(Number.MIN_VALUE) //5e-324 console.log(Number.MAX_VALUE); //1.7976931348623157e+308

如果数字超过最大值,javascript会返回Infinity,这称为正向溢出(overflow);如果等于或超过最小负值-1023(即非常接近0),javascript会直接把这个数转为0,这称为负向溢出(underflow)

如果要想确定一个数值是不是有穷的,可以使用isFinite()函数。这个函数在参数位于最小与最大数值之间时会返回true

 var result = Number.MAX_VALUE + Number.MAX_VALUE; console.log(isFinite(result)); //false

特殊数值

1、+0和-0

这两个0在大对数的情况下都是等价的

 -0 === +0; //true 0 === -0; //true 0 === +0; //true

但是在作为分母的时候是不一样的

1/-0 == 1/+0; //false

2、infinity

Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity。

 Math.pow(2,Math.pow(2,100));//Infinity 1/0;//Infinity

Infinity参与的运算结果只能是其本身、0或NaN

* Infinity;//Infinity- Infinity;//-Infinity+ Infinity;//Infinity/ Infinity;//0 Infinity / 2;//Infinity Infinity * Infinity;//Infinity Infinity - Infinity;//NaN Infinity + Infinity;//Infinity Infinity / Infinity;//NaN

3、NaN

这个数值表示一个本来要返回数值的操作数未返回数值的情况

NaN与任何值不相等,包括它本身,并且涉及NaN的任何操作都会返回NaN

 5 - 'x'; //NaN Math.acos(2); //NaN 0 / 0; //NaN NaN == NaN;//false NaN == Infinity;//false 

NaN不是一种独立的数据类型,而是一种特殊数值,它的数据类型依然属于Number

 typeof NaN; //number

isNaN方法可以用来判断一个值是否为NaN,但是,isNaN只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。

 isNaN('Hello') // true // 相当于 isNaN(Number('Hello')) // true 

判断NaN更可靠的方法是,利用NaN是javascript之中唯一不等于自身的值这个特点,进行判断

 function isNaN(value){ return value != value; }

数制转换

有3个函数可以把非数值转换成数值:Number()、parseInt()和parseFloat()。其中Number()可以将任意类型的值转化成数值,而parseInt()和parseFloat()只应用于字符串向数字的转换

Number()

转换规则:

1、如果是Boolean值,true和false将分别转换为1和0

2、如果是null值,返回0

3、如果是undefined,返回NaN

4、如果是字符串,遵循以下规则:

(1)若字符串只包含十进制或十六进制数字,则转成十进制的数字

注意:Number()不识别八进制数字的字符串,会按照十进制数字处理

字符串'1.2.'不会报错,但数字1.2.会报错

(2)若字符串为空字符串或空格字符串,则转成0

(3)其他情况的字符串,则转成NaN

Number(true) //1 Number(null) //0 Number(undefined) //NaN Number("0123") //123 Number("0x123") //291 Number("0.2") //0.2 Number("") //0 Number("asd") //NaN

parseInt()

parseInt()专门用于把字符串转换成整数。在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符

 console.log(parseInt(' 123.8px'));//123 console.log(parseInt(' 123.8 '));//123 console.log(parseInt(' -123.8px'));//-123 console.log(parseInt('a123.8px'));//NaN console.log(parseInt('0 123.8px'));//0

注意:在ECMAScript5中,parseInt()已经不具备解析八进制的能力。例如八进制“070”,会忽略前面的“0”,得到十进制的70

为了消除在使用parseInt()函数时可能导致的上述困惑,可以为这个函数提供第二个参数:转换时使用的基数(多少进制)

 parseInt("070") //70 parseInt("070",8) //56

parseFloat()

parseFloat()专门用于字符串转换浮点数。同样地,解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止

console.log(parseFloat(' 0123.px'));//123 console.log(parseFloat(' 123.px'));//123 console.log(parseFloat(' 123.1px'));//123.1 console.log(parseFloat(' 123.1.2px '));//123.1 console.log(parseFloat(' -123.0px'));//-123 console.log(parseFloat('.123.1px'));//0.123 console.log(parseFloat('0 123px'));//0

注意:parseFloat()只解析十进制,所以十六进制的字符串始终会被转换成0。因此也没有第二个参数用来指定基数

 parseFloat("0xA") //0

注意:Number('')的结果是0,parseInt('')和parseFloat('')的结果是NaN

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

相关文章

关于js中的鼠标事件总结

关于js中的鼠标事件总结

鼠标事件,电脑软件,js,js中鼠标事件主要有onclick,onmousedown,onmouseup,oncontextmenu,ondblclick,所有的这些事件都包含有一个事件对象event,当然在IE低版本下,event对象是挂在window底下的。这个我们另行讨论。1.通过html添加事件 <input ty…

js实现加载页面就自动触发超链接的

js实现加载页面就自动触发超链接的

超链接,加载,示例,页面,电脑软件,如下所示:以上这篇js实现加载页面就自动触发超链接的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。…

关于使用js算总价的问题

关于使用js算总价的问题

总价,电脑软件,js,昨天对接数据,发现有个商品总价需要计算,商品数量不定,商品价格不定,商品种类不定,有点蒙,想来想去想找到点简单的写法也没想到,最后提供一种简单的思路吧。商品数量,商品价格先建立两个数组; let pro_num=[]; let pro_price=[];…

jQuery 实现的依次加载功能

jQuery 实现的依次加载功能

加载,功能,电脑软件,jQuery,css代码:ul#portfolio{margin:0;padding:0;}ul#portfolio li{float: left;margin:0 5px 0 0;width:250px;height: 250px;list-style: none;}ul#portfolio li.loading{background: url(../images/spinner.gif) no-…

excel对数函数的使用教程详解

excel对数函数的使用教程详解

函数,使用教程,对数,使用方法,详解,  对数函数在excel中的运用比较广,具体该如何使用呢?不太会的小伙伴可以看看小编给大家整理的关于excel对数函数的使用教程,以供大家阅读和学习。excel对数函数的使用方法对数函数使用步骤1:比如我要在单…

PS临摹一个超写实的手表教程

PS临摹一个超写实的手表教程

教程,手表,超写实,电脑软件,PS,效果对比图:主要过程:12 3 4 5 阅读全文1 23 4 5 阅读全文1 2 34 5 阅读全文1 2 3 45 阅读全文教程结束,以上就是PS临摹一个超写实的手表教程的全部内容,希望大家喜欢!相关教程推荐:Photoshop为金属手表产品图…

ai怎么制作折叠贴纸? ai制作折角效

ai怎么制作折叠贴纸? ai制作折角效

教程,折叠,贴纸,效果,电脑软件,ai教程之创建折叠贴纸的教程。软件名称:Adobe Illustrator CS6 (AI cs6) 精简绿色中文版(32位+64位)软件大小:205MB更新时间:2014-05-111、M(矩形)->画一个矩形2、v(选择工具)->ctrl+c(复制->ctrl+f(贴在前面),按住shi…

APMServ中Apache启动失败的解决方

APMServ中Apache启动失败的解决方

解决方法,启动失败,电脑软件,APMServ,Apache,解决办法之一: Apache 启动失败解决办法~~~ 把左下角的SSL钩上了,如果你没有用证书,就把那个去掉,反正我去掉就可以了。后来装了证书钩上SSL也可以用了。 解决办法之二: 我遇到跟楼主同样问题,在新装…

socket.io学习教程之基础介绍(一)

socket.io学习教程之基础介绍(一)

教程,学习,基础,电脑软件,socket,前言Web端与服务器间的实时数据传输的是一个很重要的需求,但最早只能通过AJAX轮询询实现。在WebSocket标准没有推出之前,AJAX轮询是唯一可行的方式(通过Flash浏览器也可以,但这里不做讨论)。AJAX轮询原理是设…

Excel2007中找回未保存文档的处理

Excel2007中找回未保存文档的处理

文档,步骤,处理方法,电脑软件,strong,  如果恢复在误操作或断电、死机等特殊原因导致没有及时保存的excel表格数据信息情况下,今天,小编就教大家在Excel2007中找回未保存文档的处理方法。Excel2007中找回未保存文档的处理步骤打开一个excel…

在PS里制作一把可爱又漂亮的钥匙

在PS里制作一把可爱又漂亮的钥匙

钥匙,漂亮,可爱,电脑软件,PS,我们每天都会用到钥匙,那我们不防用PS做一把又漂亮又可爱的钥匙吧,下面为大家介绍具体操作步骤,一起来学习吧!步骤:1、新建一个文档,并新建图层一,用钢笔工具画出一个心形,并填充为蓝色。2、在图层一上制作一个小的心形…