ES6之基本类型:数值与Number

数值

js的数值具有以下几条特征:
1.不区分整数值和浮点数值。
2.所有数值均用浮点数值表示。
3.采用IEEE-754标准定义的64位浮点数格式表示。(整数在实际操作时(如数组索引),则是基于32位整数)

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

0b111110111 === 503 // true
0o767 === 503 // true

(但在ES6的严格模式下,禁止使用八进制)

浮点数直接量
实数写法:由整数部分、小数点和小数部分组成。
如:3.1415926
(存储时用)指数记数法:在实数部分后跟字母e或E,再跟正负号,在跟一个整型的指数。
如:5.12e12-> 5.12×10^12
1.44E-8 -> 1.44×10^-8

算术运算
运算符:
包括:+、-、*、/、%、**(指数操作符,ES6新增)
溢出(overflow):
当数值运算结果超过了JavaScript能表示的数值上限时发生。
结果为Infinity,若超过了负数范围,则为-Infinity。
基于±Infinity的加、减、乘、除等算术运算结果依然是±Infinity。
Infinity/Infinity=NaN
下溢(underflow):
当运算结果无限接近于零,并比JavaScript能表示的最小值还小时发生。
JavaScript会返回0,若当一个负数发生下溢时,则返回-0。
被零整除:
简单的返回±Infinity,0/0=NaN

二进制浮点数与四舍五入错误
实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限个数。
当JavaScript使用实数时,常常只是真实值的一个近似表示。
IEEE-754浮点数表示法是一种二进制表示法,可以精确地表示分数。如:1/2、1/8和1/1024等。
但常用的分数都是十进制分数,二进制浮点数并不能精确表示类似0.1这样的简单数值。
如:0.3-0.2 -> 0.09999999999999998
任何使用二进制浮点数的编程语言中都会有这个问题。
建议,尽可能使用大整数进行等比修正以避免该类错误。如:3-2

数值转换
JavaScript提供了3个函数可将非数值转换为数值。
Number( )、parseInt( )和parseFloat( )

Number(false)//如果是Boolean值,true和false值将分别被转换为1和0。
Number(null)//如果是null值,返回0
Number(undefined)//如果是undefined,返回NaN。
Number("011")//如果字符串中只包含数字时,将其转换为十进制数值,忽略前导0
Number("1.1")//如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导0
Number("0xf")//如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值
Number("")//如果字符串为空,将其转换为0
//如果字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值