0302补充

2.03.02数字的进制与数字的一些方法

1.数字的进制

  • 概念:在JavaScript中,Number数据类型可以使用四种数字进制:十进制,二进制,八进制和十六进制。
  1. 十进制数字
  • 注意:十进制可以以0开头,后面接其他十进制数字,但是假如下一个接的十进制数字小于8,那么该数字将会被当做八进制处理。一般不以0开头的数字都当做是十进制。
var a=0777;
console.log(" a*1 => " + a*1);  //a*1 => 511

a=0888;
console.log(" a*1 => " + a*1);  // a*1 => 888
  1. 二进制数字
  • 二进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母B(0b或者是0B)。 假如0b后面的数字不是0或者1,那么就会提示这样的语法错误: “Missing binary digits after 0b(0b之后缺失二有效的二进制数据)”。
var a=0b10;
console.log(" a*1 => " + a*1);  // a*1 => 2

a=0B1;
console.log(" a*1 => " + a*1);  //  a*1 => 1
  1. 八进制数字
  • 八进制数字语法是以0为开头的。假如0后面的数字不在0到7的范围内,该数字将会被转换成十进制数字。
var n = 0755; // 493
var m = 0644; // 420
  1. 十六进制数字
  • 十六进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母X(0x或者是0X)。假如0x后面的数字超出规定范围(0123456789ABCDEF),那么就会提示这样的语法错误(SyntaxError):“Identifier starts immediately after numeric literal”.
var a=0x10;
console.log(" a*1 => " + a*1);  // a*1 => 16

a=0X1;
console.log(" a*1 => " + a*1);  //  a*1 => 1

2.数字的方法

1. 常用的一些数字方法

  1. Number.parseInt()
  • 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt()作用一致。
  • 语法: Number.parseInt(string[, radix])
//解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。

// 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38
Number.parseInt('123', 5) 

Number.parseInt('0xF', 16); // 15

Number.parseInt("546", 2);   //NaN 除了“0、1”外,其它数字都不是有效二进制数字
  • 注意:
注意:如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
1. 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
2. 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
3. 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
  1. Number.isNaN()
  • 判断传递的值是否为 NaN. 全局方法 isNaN()的更强大版本。
因为 NaN == NaN 和NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。

和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true。

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// 下面这几个如果使用全局的 isNaN() 时,会返回 true。
Number.isNaN("NaN");      // false,字符串 "NaN" 不会被隐式转换成数字 NaN。
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false
  1. Number.parseFloat()
  • 把字符串参数解析成浮点数,如果无法被解析成浮点数,则返回NaN,和全局方法 parseFloat() 作用一致。
    • 如果 parseFloat 在解析过程中遇到了正号(+)、负号(-)、数字(0-9)、小数点(.)、 或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符, 返回当前已经解析到的浮点数。
    • 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)。
    • 参数首位和末位的空白符会被忽略。
    • 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
    Number.parseFloat('123') // 123
    parseFloat('3.14'); // 3.14
    parseFloat('  3.14  '); // 3.14
    parseFloat('314e-2'); // 3.14
    parseFloat('0.0314E+2'); // 3.14
    parseFloat('3.14some non-digit characters');// 3.14
    parseFloat("FF2"); // NaN

2. 数字类型原型上的方法

  • .toFixed():返回指定小数位数的表示形式
var a = 123
// 这里看起来a是一个对象toFixed是他的属性方法,其实这个是通过Number对象的原型继承过来的方法
var b = a.toFixed(2)
console.log(b);   //b="123.00"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值