欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript数值类型知识汇总

程序员文章站 2022-07-02 19:38:57
整数 十进制 二进制 以零为开头,后面接一个小写或大写的拉丁文字母b(0b或者是0b) 八进制 以0开头,然后是八进制数字序列(0-7) ,...

整数

  • 十进制
  • 二进制

以零为开头,后面接一个小写或大写的拉丁文字母b(0b或者是0b)

  • 八进制

以0开头,然后是八进制数字序列(0-7) , 如果字面值中的数值超出范围,那么前导0将被忽略,后面的数值当作十进制解析。

  • 十六进制

十六进制字面值的前两位必须是 0x,后跟任何十六进制数字(0~9 及 a~f)。其中,字母 a~f可以大写,也可以小写;

浮点数

保存浮点数需要的内存空间是保存整数值的两倍,因此ecmascript会不失时机的将浮点数转换为整数值。

var floatnum1 = 1.; // 小数点后面没有数字——解析为 1
var floatnum2 = 10.0; // 整数——解析为 10

默认会将小数点后面带有6个零以上的浮点数值转换为以e表示法表示的数值;

浮点数值的最高精度是17位小数;

数值范围

最大值number.max_value 1.7976931348623157e+308

最小值number.min_value 5e-324

  • number.min_value < var1 < number.max_value , isfinite(var1)返回false, 否则返回true
  • 如果值超过了js数值范围,那么这个数值自动被转换成特殊的infinity值。实际情况 number.max_value + 1 还等于 number.max_value;
  • isfinite()函数判断数值是否位有穷,参数位于最小与最大数值之间时会返回 true

nan

  • 任何涉及 nan 的操作(例如 nan/10)都会返回 nan
  • nan 与任何值都不相等,包括 nan 本身
  • 实际上只有 0 除以 0 才会返回 nan,正数除以 0 返回 infinity,负数除以 0 返回-infinity
  • isnan() 。在接收到一个值之后,会尝试将这个值转换为数值。也适用于对象,先调用对象的valueof()判断是否能转成数值,若不能调用tostring()再测试返回值。

数值转换

有 3 个函数可以把非数值转换为数值: number()、 parseint()和 parsefloat()

number()

  1. 如果是boolean类型, true返回1,false返回0;
  2. 如果是数值,只是简单的传入返回;
  3. 如果是null,返回0
  4. 如果是undefined, 返回nan;
  5. 如果是字符串,字符串如果只包含数字,则将其转换成十进制数;如果是有效的浮点格式,将其转换成对应的浮点数值;如果是二进制或十六进制将其转换成对应的十进制数值;
alert(number("3.14e5"));  // 314000
alert(number("0b1111"));  // 15, 将二进制转换为十进制
alert(number("017"));    // 17, 不会转为8进制
alert(number("0x1a"));   // 26, 转换为16进制
alert(number(""));     // 空字符串,返回0
alert(number("1a"));    // 返回nan

   6.如果是对象,调用对象的valueof()方法,然后依照前面规则转换,如果valueof返回值是nan,则调用tostring()方法,再依照前面的规则转换返回的字符串

parseint()

第一个参数,要解析的数值字符串;第二个参数采用多少进制,不指定基数意味着让 parseint()决定如何解析输入的字符串;

  1. 如果第一个字符不是数字字符或者负号, parseint()就会返回 nan;
  2. parseint()转换空字符串会返回 nan
  3. 如果第一个字符是数字字符, parseint()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。
parseint("1234blue")  // 1234, blue忽略

parseint("22.5");  // 22

parseint不能解析二进制的数值,在es5中,也不能解析八进制的数值;

parseint("0b1111");   // 0
parseint("071");  // 71,

parsefloat()

  1. parsefloat()只解析十进制值,因此它没有用第二个参数;
  2. 从第一个字符(位置 0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止;
  3. 它始终都会忽略前导的零
var num1 = parsefloat("1234blue"); //1234 (整数)
var num2 = parsefloat("0xa"); //0
var num3 = parsefloat("22.5"); //22.5
var num4 = parsefloat("22.34.5"); //22.34
var num5 = parsefloat("0908.5"); //908.5
var num6 = parsefloat("3.125e7"); //31250000

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

相关标签: js 数值 类型