ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] >[success] # Number类型 八进制:逢八进1 十进制:即1.满十进一,满二十进二,以此类推.... >[success] ## 浮点数值 ~~~ 所谓'浮点数',就是该'数值中必须包含一个小数点,并且小数点后面必须至少有一位数字' var floatNum1 = 1.1; var floatNum2 = 0.1; var floatNum3 = .1; // 有效但是不推荐 '浮点数值占用内存空间是整数值得2倍',所以下面的写法会自动转换成整数 var floatNum1 = 1.; var floatNum2 = 10.0; ~~~ <br/> >[success] ## 数值范围 ~~~ 由于内存的限制,如果js中出现的值特别小就会是'-Infinity(负无穷)',特别大的话就是'Infinity(正无穷)',如果经过某次 计算返回了正或负的 Infinity值,那么该值无法继续进行下一次计算。 console.log(Number.NEGATIVE_INFINITY) // 负无穷 console.log(Number.POSITIVE_INFINITY) // 正无穷 'isFinite()'方法会检测一个数值是否为正(负)无穷数,如果是的话返回false console.log(isFinite(Number.NEGATIVE_INFINITY)) // false console.log(isFinite(Number.POSITIVE_INFINITY)) // false ~~~ <br/> >[success] ## NaN ~~~ 在其他语言中任何数值除以非数值都会导致错误,从而停止代码执行,但是'js中任何数值除以非数值都会返回NaN',因此不会影响 其他代码的执行 NaN与任何数字都不相等,包括自己 console.log(NaN == NaN) // false ~~~ <br/> >[success] ## isNaN判断是否为数字 ~~~ 变量的值为'NaN'用'typeof'检测的结果也是'number'类型,'isNaN'可以用来判断是否为数字 ~~~ ~~~ isNaN等于number类型的值都会返回false,但是如果isNaN(false),他就会返回false,这样就就错了,所以要像下面这样写: if(typeof a === 'number' && isNaN(a) === false){ alert('等于数字') }else{ alert('非数字') } console.log(isNaN(NaN)) // true console.log(isNaN(10)) // false(10是一个数值) console.log(isNaN("10")) // false(可以被转换成数值10) console.log(isNaN("blue")) // true(不能转换成数值) console.log(isNaN(true)) // false(可以被转换成数值1) ~~~ <br/> >[success] ## isNaN判断对象是否为空对象 之前在 [Null类型篇章](https://www.kancloud.cn/wangjiachong/javascript/1272737) 说过用来判断 “ 是否存在null的方法 ” 来确认这个变量中是否存在对象,其实isNaN也适用于对象,可以用来判断对象是否有值,如下: ~~~ var a = null // false var a = {} // true console.log(isNaN(a)) ~~~ <br/> >[success] ## 数值转换 ~~~ 有'3'个函数可以把'非数值转换为数值':Number()、parseInt()、parseFloat() ~~~ <br/> >[success] ### Number()方法 Number()可以用于任何数据类型 | 数据类型 | Number()转换后 | | --- | --- | | Boolean | true 和 false 被转换成 1 和 0 | | Number | 只是简单的传入和返回 | | null | 0 | | undefined | NaN | | string | 1. 如果字符串只包含数字,‘123’ 会被转换成 123<br/>而‘011’会变成 11 <br/><br/>2. 浮点数 ‘0.1’ 也会被转换为 0.1 ,‘01.1’ 转换为 1.1 <br/><br/> 3. 十六进制也会转换为数字‘0xf’转换为 15 <br/><br/> 4. 空字符串转换为0 <br/><br/> 5. 如果以上的都没有转换结果为NaN | | Object | NaN | 举例: ~~~ var num1 = Number('哈哈哈') // NaN var num2 = Number('') // 0 var num3 = Number('0011') // 1 var num4 = Number(true) // 1 ~~~ <br/> >[success] ### parseInt()方法 parseInt()适用于 ' 整数 ' ~~~ console.log(parseInt(' 123 ')) // 123 ,parseInt会忽略字符前后的空格 console.log(parseInt('')) // NaN console.log(parseInt('0xA')) // 10(十六进制数) console.log(parseInt('22.5')) // 22 console.log(parseInt('070')) // 56(八进制数) 这里书上说是56,但是打印结果却是70 console.log(parseInt('70')) // 70(十进制数) 如果已知值是'十六进制格式的字符串' parseInt('0xAF', 16) // 175 parseInt('AF', 16) // 175 16进制可以简写 parseInt('AF') // NaN ~~~