Number类及其方法

Number

  • Number :表示整数和浮点数
  • NaN :即非数值( Not a Number )是一个特殊的数值

面试常考!

说明:

  1. 任何涉及NaN的操作(例如NaN/10 )都会返回NaN。
  2. NaN与任何值都==不相等==,包括NaN本身。
  3. 如果typeof一个NaN,你会在F12中看到number,因为==NaN是特殊的number==

toFixed() 方法指定小数位数

  • toFixed()方法可把 Number类对象的值 四舍五入为指定小数位数的数字(注意是字符串形式的数字)。(通过参数规定小数的位数)
  • 语法NumberObject.toFixed(num)
  • 参数num:必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
  • 返回值:返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
  • 抛出异常
    当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
    当调用该方法的对象不是 Number 时抛出 TypeError 异常。

toPrecision() 方法指定数字总长度

  • toPrecision() 方法可在Number对象的值超出参数指定的位数时将其有效长度转换为指数计数法(科学记数法)。(把Number对象的值格式化为参数指定的长度,注意是总位数不是小数位数
  • 语法NumberObject.toPrecision(num)
  • 参数num:必需。规定必须被转换为指数计数法的最小位数。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。有效实现允许有选择地支持更大或更小的 num。如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。
  • 返回值
  1. 返回 NumberObject 的字符串表示,包含 num 个有效数字
  2. 参数 num >= NumberObject 整数部分的所有数字时返回的字符串将采用定点计数法
  3. 否则,采用指数计数法(科学记数法),即小数点前有一位数字,小数点后有 num-1 位数字。必要时,该数字会被舍入或用 0 补足。
  • 抛出异常
    当 num 太小或太大时抛出异常 RangeError。1 ~ 21 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
    当调用该方法的对象不是 Number 时抛出 TypeError 异常。
  1. 参数规定的有效数字的位数是从数字第一个不为0的数(包括整数部分和小数部分)开始计算的位数。
  2. 在指数记数法(科学记数法)中,E是指数的意思,在java中e代表10的幂次,5.62e+5 = 5.62*10^5; 同样的,5.62e-5 = 5.62*10^(-5)

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//toPrecision()会进行四舍五入

var num = 423.536;
// 调用的是toString()方法
document.writeln( num.toPrecision() ); // 423.536

num = 562345.12456;
// 由于整数部分有6位,要求只有3位有效数字,必须采用指数计数法才能表示。
document.writeln( num.toPrecision( 3 ) ); // 5.62e+5

num = -2651.10;
// 整数部分有4位,要求的有效数字为4位,采用定点表示法
document.writeln( num.toPrecision( 4 ) ); // -2651

num = 4564561.12457;
// 整数部分有7位,要求有效数字为1位,采用指数计数法
document.writeln( num.toPrecision( 1 ) ); // 5e+6

num = 231;
// 整数部分有3位,要求有效数字为5位,采用定点表示法,并在小数部分填充两个0
document.writeln( num.toPrecision( 5 ) ); // 231.00

num = 0.8;
// 整数部分有1位,要求有效数字为1位,采用定点表示法
document.writeln( num.toPrecision( 1 ) ); // 0.8

区别toFixed() 方法toPrecision() 方法

  • 两者都是返回字符串形式的数字。
  • toFixed() 方法没有触发要求,参数直接规定小数位数,不采用科学记数法。(0 <= 参数 <= 20)
  • toPrecision() 方法由参数规定整个数字的总位数。(1 <= 参数 <= 21)**
    当 参数 >= Number对象的值的
    整数位数** 时采用定点记数法(也就是小数点)(比如:参数为1时,0.8 = 0.8)。
    否则采用科学记数法(比如:参数为3时,562345.12456 = 5.62*10^5 = 5.62e+5