Javascript入门-数值

【摘】http://javascript.ruanyifeng.com/

JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)

1.0===1//true
0.1 + 0.2 === 0.3// false
0.3 / 0.1// 2.9999999999999996
(0.3 - 0.2) === (0.2 - 0.1)// false

十进制:没有前导0的数值
八进制:有前缀0o或0O的数值
十六进制:有前缀0x或0X的数值
二进制:有前缀0b或0B的数值
有前导0的数值会被视为八进制,但是如果前导0后面有数字8和9,则该数值被视为十进制。

特殊数值
1、正零和负零
JavaScript 内部实际上存在2个0:一个是+0,一个是-0

-0 === +0 // true
0 === -0 // true
0 === +0 // true
+0 // 0
-0 // 0
(-0).toString() // '0'
(+0).toString() // '0'
(1 / +0) === (1 / -0) // false

2、NaN

//主要出现在将字符串解析成数字出错的场合
5 - 'x' // NaN
//一些数学函数的运算结果会出现NaN
Math.acos(2) // NaN
Math.log(-1) // NaN
Math.sqrt(-1) // NaN
//0除以0也会得到NaN
0/0 //NaN
//它的数据类型依然属于Number
typeof NaN // 'number'
//NaN不等于任何值,包括它本身
NaN === NaN // false

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

Infinity === -Infinity // false

1 / -0 // -Infinity
-1 / -0 // Infinity
//Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。
//Infinity与NaN比较,总是返回false。

parseInt()
1、将字符串转为整数,如果参数不是字符串也会先转为字符串再转化;
2、字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分;
3、parseInt的返回值只有两种可能,要么是一个整数,要么是NaN

parseFloat()
1、将一个字符串转为浮点数,如果参数不是字符串也会先转为字符串再转化;
2、如果字符串符合科学计数法,则会进行相应的转换;
3、如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分;
4、如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN;
5、parseFloat的转换结果不同于Number函数

parseFloat(true)  // NaN
Number(true) // 1

parseFloat(null) // NaN
Number(null) // 0

parseFloat('') // NaN
Number('') // 0

parseFloat('123.45#') // 123.45
Number('123.45#') // NaN

isNaN()
1、方法可以用来判断一个值是否为NaN;
2、isNaN只对数值有效,如果传入其他值,会被先转成(Number)数值。
3、字符串、对象、数组,除了一下情况,isNaN返回true

Number(true)//1
Number(false)//2
Number('')//0
Number([])//0
Number([123])//123
Number(['123'])//123
Number(null)//0
Number(undefined)//NaN
Number({})//NaN

4、判断NaN更可靠的方法是,利用NaN为唯一不等于自身的值的这个特点

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

isFinite()
1、表示某个值是否为正常的数值
2、除了Infinity、-Infinity、NaN和undefined这几个值会返回false,isFinite对于其他的数值都会返回true

    原文作者:爱笑的疯小妞
    原文地址: https://www.jianshu.com/p/17b31088cea6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞