Infinity的几个出现场景以及一些简单计算操作的注意事项

Number--js中的内置对象之一 ,在Number中 有这样两个属性:

MAX_VALUE  =========>>>可表示的最大的数。它的近似值为 1.7976931348623157 x 10的308次方。

如果 数值超过了计算机可显示的最大数值,则返回Infinity,同理负数返回的为-Infinity;

MIN_VALUE  =========>>>可表示的最小的正数。

MIN_VALUE 属性是 JavaScript 中可表示的最小的数(接近 0 ,但不是负数!!!)。它的近似值为 5 x 10的-324次方。

js中没有无穷小这个概念,所以无法表示比MIN_VALUE 小且大于0的数字,这就是为什么在数学组1/∞可以表示无穷小,但是在计算机中1/Infinity的返回值为0的原因。

我在下面总结了一些常用的数学计算方法返回值为非正常显示数值的情况:

1.乘法计算

①. 如果 操作数都是数值的情况,执行 乘法计算(*)的时候,如果乘积超过了ECMAScript数值的表示范围则返回Infinity或-Infinity;

②. 如果是Infinity与0相乘,返回结果NaN;

③.Infinity与非0数值相乘 返回结果为Infinity或-Infinity;

④.Infinity与Infinity相乘返回结果Infinity;

⑤.如果一个 操作数为NaN ,则返回结果为NaN();

⑥.如果一个操作数不是数值,则后台会默认调用Number()隐式转换后操作,然后引用上面的规则。

2.除法计算

js中的除法计算与乘法计算相似,唯一注意的是在表示无穷小的时候,因为js中并没有无穷小的概念,所以数学方法中的无穷小=1/无穷大的概念行不通。所以1 / Infinity 的结果为0,除此之外,非零的有限数被0除,结果为Infinity或者-Infinity; 

3.加法计算

js中简单数据类型应用中,不止Number类型可以进行加法计算,String类型也可以,利用+进行字符串拼接操作,所以在进行加法计算之前一定要分清楚要计算的操作数属于什么类型,然后在进行计算,否则得出的结果天差地别。

①.Infinity与Infinity相加结果为Infinity;

②.-Infinity加-Infinity结果为-Infinity;

③. 需要 注意一点,Infinity与-Infinity相加结果不是0,而是NaN;

④. 0虽然不分正负,但是在控制台输出的时候会有+0和-0的不一样的显示效果。所以0+0的结果为0,而-0 + -0的结果为-0;

⑤.另外一个需要注意的地方是如果一个操作数为字符串,则会默认将另外一个数值进行隐式转换然后进行字符串拼接操作。

⑥.如果第一个操作数为字符串,我们在其前面加上一个+可以尝试将其进行隐式的Number类型转换:

如:console.log(+"10")  其输出结果为数字类型的10;

而如果是console.log("10"+0) 则结果为字符串类型的100;

如果是console.log(0+"10"+0)则输出结果为字符串0100;

⑦.如果有一个操作数为NaN,则返回结果为NaN;

4.减法计算

与加法操作类似;

你可能感兴趣的:(Infinity的几个出现场景以及一些简单计算操作的注意事项)