Skip to content

数值-Number

Number 对象是原始数值的包装对象。

Number 创建方式 new Number()。

1.创建Number对象方法

js
var num=new Number(value)

注意: 如果一个参数值不能转换为一个数字将返回 NaN (非数字值)。

2.Number对象属性

可通过Number.key来获取

属性描述
MAX_VALUE可表示的最大的数。
MIN_VALUE可表示的最小的数。
NEGATIVE_INFINITY负无穷大,溢出时返回该值。
NaN非数字值。
POSITIVE_INFINITY正无穷大,溢出时返回该值。
prototype允许您可以向对象添加属性和方法。

3.Number对象静态方法

Number.isNaN()

作用:检测指定参数是否为 NaN。

返回值:布尔型

js
Number.isNaN(123);				// false
Number.isNaN(-1.23);			// false
Number.isNaN('123');			// false
Number.isNaN(0/0);				// true
Number.isNaN(5-2);				// false
Number.isNaN(0);				// false
Number.isNaN('Hello');			// false
Number.isNaN('2005/12/12');		// false
Number.isNaN(' ');				// false

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

js
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

// 下面的都返回 false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

Number.isFinite()

作用:检测指定参数是否为无穷大,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

  • Number.isFinite() 与全局的 isFinite() 函数不同,全局的 isFinite() 会先把检测值转换为 Number ,然后在检测。
  • Number.isFinite() 不会将检测值转换为 Number对象,如果检测值不是 Number 类型,则返回 false。

语法

js
Number.isFinite(value)

返回值:布尔型

js
Number.isFinite(123) //true
Number.isFinite(-1.23) //true
Number.isFinite(5-2) //true
Number.isFinite(0) //true
Number.isFinite('123') //false
Number.isFinite('Hello') //false
Number.isFinite('2005/12/12') //false
Number.isFinite(Infinity) //false
Number.isFinite(-Infinity) //false
Number.isFinite(0 / 0) //false

Number.isInteger()

作用:检测参数是否为整数

返回布尔值

js
Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger(-100000);   // true

Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false

Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger("10");      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

4.Number对象的原型方法

toFixed()

作用

  • 把数字转换为字符串,结果的小数点后有指定位数的数字
  • 简单来说,就是保留几位小数,若不够则补0

语法

js
number.toFixed(x)

参数

  • number:需要转换成字符串的数字
  • x:必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
js
const n=1.223344
console.log(n.toFixed())    // 1

console.log(n.toFixed(3))    // 1.223

console.log(n.toFixed(10))    // 1.2233440000

toLocaleString()

作用:方法返回这个数字在特定语言环境下的表示字符串

语法

js
toLocaleString(locales, options)

参数

  • locales可选
    • 缩写语言代码(BCP 47 language tag)的字符串或者这些字符串组成的数组。与 Intl.NumberFormat() 构造函数的 locales (en-US) 参数相同。
  • options可选
    • 调整输出格式的对象。与 Intl.NumberFormat() 构造函数的 options (en-US) 参数相同。
js
const number = 123456.789;

console.log(number.toLocaleString());       // 123,456.789

// 德国使用逗号作为小数分隔符,分位周期为千位
console.log(number.toLocaleString('de-DE'));    // → 123.456,789

// 在大多数阿拉伯语国家使用阿拉伯语数字
console.log(number.toLocaleString('ar-EG'));    // → ١٢٣٤٥٦٫٧٨٩

// 印度使用千位/拉克(十万)/克若尔(千万)分隔
console.log(number.toLocaleString('en-IN'));    // → 1,23,456.789

// nu 扩展字段要求编号系统,e.g. 中文十进制
console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));  // → 一二三,四五六.七八九

// 当请求不支持的语言时,例如巴厘语,加入一个备用语言,比如印尼语
console.log(number.toLocaleString(['ban', 'id']));  // → 123.456,789

MIT Licensed