- 进制表示:
10进制直接写
8进制以0开头,后面数值的范围是0-7,如果后面的数值超出范围,则忽略前导0,后面的数值看成10进制
16进制以0x开头,后面数值的范围是0-9及a-f(或A-F,不区分大小写)- 数值分类:
整数和浮点数- 浮点数:
数值中必须有一个小数点,且小数点后面至少有一位数字
浮点数所占的内存空间时整数的两倍,所以ECMAScript会自动的将浮点数转为整数,当浮点数为(1.或1.0)这样时
0.1 + 0.2 != 0.3- 科学计数法(e):
e或者E,不区分大小写
men = mEn = m10^n
m为数值(整数或者浮点数),n为10的几次幂,e前面的数值m乘以10的e后面的数值n次幂
**3e-7 = 310^-7 = 0.0000003**- 数值范围:
最小:Number.MIN_VALUE
最大:Number.MAX_VALUE
超过最大(正无穷 Infinity):Number.POSITIVE_INFINITY,不能参与计算
超过最小(负无穷 -Infinity):Number.NEGATIVE_INFINITY,不能参与计算
isFinite(num):判断num是否在最大值和最小值之间的函数(是不是有穷的),在返回true- NaN:
非数值(Not a Number),用于表示一本来要返回数值的操作数,但却未返回数值的情况,以免报错代码停止执行
数值与非数值计算返回NaN
NaN与任何值计算都返回NaN
NaN与任何值都不相等,包括NaN本身
isNaN(n),会先将n这个值转换为数值,不能转为数值的会返回true- 数值转换:
非数值转换为数值:Number(n)、parseInt(n,进制)、parseFloat(n)
可以转换为0,1,NaN,其他普通数值
- Number(n):
- Boolean:true = 1,false = 0
- Number:直接返回,不做操作
- Null:null = 0
- Undefined:undefined = NaN
- String:
- 只包含数字(包括正负号):转换为10进制数值,8进制和16进制会忽略前导的0或0x,也转换为10进制
- ‘’ = 0,不包含任何字符,空格可以
- 其他 = NaN
- Object:先调valueOf(),按照上面的规则转换返回的值,如果是NaN,再调toString(),在按上面规则测试返回的值
- parseInt(n,进制):
- 和Number()很像,主要看是否符合数值模式(只转换数值和正负号的部分,其他不转换或直接就是NaN)
- 忽略字符串前面的空格,直到找到第一个非空格字符
- 如果第一个字符不是数字或者正负号,就返回NaN,如果是数字或者正负号则继续测试第二个字符,直到遇到非数字或者解析完所有字符
- 小数点也不是有效的字符
- 可识别进制,8,10,16进制会返回该进制转为的10进制数
- ‘’ = NaN
- 第二个参数进制的意思是把第一个参数识别为什么进制,parseInt(12,8) //10
- parseFloat(n):
- 和parseInt()一样的规则,只看数值和正负号
- 只有第一个小数点为有效字符
- 数值表示
- toFixed(小数位数):舍入规则为四舍五入,返回指定小数位的数值的字符串形式
- toExponential(小数位数):返回科学计数法格式的数值的字符串形式
- toPrecision(表示数值的所有数字的位数,不包括指数和e):表示数值的最合适的格式的字符串形式
ES6新增
其他
任何值转为字符串:n+""
任何值转为数值:n-0,n*1,n/1