0
点赞
收藏
分享

微信扫一扫

Number类型

RIOChing 2022-03-21 阅读 226
javascript

以写博客的形式记录学习JavaScript高级程序设计的过程,也就是自己的笔记,以及理解。若有错请及时纠正我!

number类型包括了整数型和浮点型。

在进行书写的时候可以直接写为十进制的整数,如:

let num = 18 //整数

当然也可以用八进制或者十六进制。对于八进制那么它的第一个数字就必须是0,然后相应的八进制数字(0-7),如若数字超过应有的范围,就会忽略前缀的0,则后面数字就会被当成十进制。

let num = 070 //八进制的56
let number = 079 //会被当成79来看

当然在严格模式下八进制是无效的,也就是会报错。

在书写十六进制的时候,前缀必须是0x(区分大小),然后后面跟上(0-9以及A-F)

浮点型

要定义浮点型就得加入小数点,而且小数点后边必须要有数字。

let num = 0.7
let number = .7

如果小数点后面没有数字那么这个数值就会变成整数,后面如果是0,也会变成整数。

浮点值的精度最高可达17位小数,但算数计算中去没有那么准确。列如,0.1加上0.2不会等于0.3(这是一个很常见的八股文),要想让0.1+0.2=0.3那么就要将0.1和0.2扩大10倍然后相加,得到结果后在缩小10倍。

值的范围

在JavaScript中最小值会保存到Number.MIN_VALUE中(多数浏览器的值为5e-324),最大值会保存到Number.MAX_VALUE中(1.797 693 134 862 315 7e+308),超过则会转换为Infinity中表示无穷,前面加上+或者-则表示正无穷和负无穷。

NaN

NaN表示不是数值,用0除以任意数值在其他语言中都会报错,但在JavaScript中会显示NaN,如:

console.log(0/0); // NaN 
console.log(-0/+0); // NaN

如果分子是非0值,分母是有符号的0或者无符号的0,相除则会到正无穷和负无穷。任何涉及NaN的操作始终都会返回NaN,NaN不等于包括NaN在内的任何值。

isNaN()函数,该函数接收一个参数,可以把任何数据类型,然后判断这个参数是否“不是数值”,是数值则会返回false,不是数值则会返回true。如:

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

数值转换*

有3个函数可以将非数值转换为数值:Number(),parseInt()和parseFloat()。

Number()是转型函数,可用于任何数据类型。后面两个函数主要用于将字符串转换数值。

number转换规则:

  1. 布尔值 true转换为1,false转换为0;
  2. 数值,直接返回;
  3. null,转换为0;
  4. undefined转换为NaN;
  5. 字符串,如果字符串中包含数值则会转换为十进制数值,如果字符串前面是0,则会忽略前面的0,如若是浮点型则会转换为浮点型,如果是有效的十六进制则会转换为相应的十进制。如若是空字符串则会转换为0。除这其他外都会返回NaN;
  6. 对象的话,调用valueOf()方法,并按上述的规则返回值,如若是NaN则调用toString()方法,再按照字符串的规则转换。

parseInt():

如果需要得到整数,则需要用到parseInt,它会从第一个非空格字符开始转换。如果第一个字符不是数值、加号或者减号,parseInt()立即会返回NaN。如果第一个是数值字符、加号或者符号,则会继续检测每一个字符,直到字符串末尾,或碰到非数值字符。如"1234greed"会被转换1234,greed被完全忽略。'22.5'会被转被转换22。

parseInt()也可以接受第二个参数,用于指定进制数。如:

let num = parseInt("0xAF", 16); // 175

parseFloat()函数跟parseInt()差不多一样。第一次出现的小数点是有效的,但第二次出现的小数点就无效了,后面的都会忽略。如'22.34.5'会转换成22.34。还有不同之处就是它始终忽略字符串开头的0。

举报

相关推荐

0 条评论