一, javascript中的数值

1.在js中,数值只有整数浮点数NAN

2.我们不仅可以使用十进制来表示数字,也可以使用进制来声明一个数字

(1)二进制 (添加0b前缀),
(2)八进制 (添加0o前缀)
(3)十六进制(添加0x前缀)

{
	let n=10; //十进制
	console.log(n===0b1010 )// 10的二进制表示形式,true
	console.log(n===0o12) //10的八进制表示形式,true
	console.log(n===0xA) //10的十六进制表示形式,true
}

二,javascript中浮点数运算的精度问题

1.在计算机中,数值是使用二进制表示的,对于浮点数的表示,遵循IEEE 754标准,采用双精度存储(double precision)64位。

2.浮点数转二进制的算法如下,以浮点数0.1为例当保留6位时为(0.000110)。
将浮点数*2,逢1取1,逢0取0,直到乘积为1。由于这种算法,可以看出不是所有的浮点数都能准确的表示,因此,对于某些浮点数的运算存在精度问题。

{
	0.1 * 2
	0.2      0
	--------
	0.2 * 2
	0.4      0
	--------
	0.4 * 2
	0.8      0
	--------
	0.8 * 2
	1.6      1
	--------
	0.6 * 2
	1.2      1
	--------
	0.2 * 2
	0.4      0   //之后不会得到乘积等于1的情况
	--------
}

3.运算后浮点数的比较:对于(0.1+0.2==0.3)返回的结果是false,原因就是浮点数运算的精度问题。

4.js提供Number.EPSILON 来比较运算后的浮点数,将运算后浮点数相减小于Number.EPSILON则可认为相等: (0.1 + 0.2 - 0.3 <Number.EPSILON) 返回true

三,Number对象:原始数值的包装对象

1.Number是原始数值的包装对象,类似的还有StringBoolean等基本类型的包装对象。

2.在必要时,JavaScript 会自动地在原始数据和包装对象之间转换

2.Number构造函数使用方法
(1)使用new来创建一个Number实例对象。

let n = new Number(10)

(2)直接调用Number构造函数,将传入的参数转化为原始数值类型,若不是原始数值类型返回NaN注意返回的是原始数值类型,而不是Number实例对象。

let n = Number('10')
console.log(n) // 10

Number() // 0
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // NaN
Number('ff') //NaN
Number([]) // 0
Number('') // 0
Number(1+'2') // 12

3.Number构造函数的常见静态属性

Number.MAX_VALUE :可表示的最大值
Number.MIN_VALUE :可表示的最小的数
Number.NaN:非数字值
NEGATIVE_INFINITY:负无穷大,溢出时返回该值。
POSITIVE_INFINITY:正无穷大,溢出时返回该值。

4.Number实例对象的实例方法

toString(radix):将数值转化为字符串,radix为指定的基数(2-36),默认是10,表示十进制数。

let n =  new Number(12)
n.toString() // '12'
n.toString(8) // '14'
n.toString(16) // 'c'

valueOf():返回Number实例对象的原始数值。

let n =  new Number(12)
n.valueOf() // 12

toFixed(num):可把 浮点数四舍五入为指定小数位数的数字,返回的类型是一个字符串

let n = new Number(12.02)
console.log(n.toFixed(1)) //12.0