一、创建Number实例对象


/**
* new Number(value);
* value 被创建对象的数字值
*
* Number 对象主要用于:
如果参数无法被转换为数字,则返回 NaN。
在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换
*/
let number = new Number("1100");
console.log(number); //Number {1100}
console.log(Number("123")); // 123
console.log(Number("")); // 0
console.log(Number("0x11")); // 17
console.log(Number("0b11")); // 3
console.log(Number("0o11")); // 9
console.log(Number("foo")); // NaN
console.log(Number("100a")); // NaN

二、Number静态属性

1.Number.EPSILON 属性

表示 1 和大于 1 的最小值(可表示为 Number)的差值,EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16,或者 2^(-52)


let x = 0.2;
let y = 0.3;
let z = 0.1;
let equal = (Math.abs(x - y + z) < Number.EPSILON); //true

2.Number.MAX_SAFE_INTEGER 属性

常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)(2^53 - 1)

3.Number.MAX_VALUE 属性

表示在 JavaScript 里所能表示的最大数值,接近于 1.79E+308,大于 MAX_VALUE 的值代表 "Infinity"

4.Number.MIN_SAFE_INTEGER 属性

 代表在 JavaScript中最小的安全的integer型数字 (-(2^53 - 1))

5.Number.MIN_VALUE 属性

表示在 JavaScript 中所能表示的最小的正值,值约为 5e-324,小于 MIN_VALUE ("underflow values") 的值将会转换为 0

6.Number.NEGATIVE_INFINITY 属性

表示负无穷大,其值和全局对象的 Infinity 属性的负值相同

7.Number.NaN 属性

表示“非数字”(Not-A-Number),和 全局的NaN 相同

8.Number.POSITIVE_INFINITY 属性

表示正无穷大,其值同全局对象 Infinity 属性的值相同

9.Number.prototype 属性

表示 Number 构造函数的原型,所有 Number 实例都继承自 Number.prototype,修改 Number 构造函数的原型对象会影响到所有 Number 实例

二、Number静态方法

1.Number.isFinite() 方法用来检测传入的参数是否是一个有穷数


/**
* Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)
* Number.isFinite(value)
* value 要被检测有穷性的值
*
* 和全局的 isFinite() 函数相比,这个方法不会强制将一个非数值的参数转换成数值,这就意味着,只有数值类型的值,且是有穷的(finite),才返回 true
* 返回值:一个 布尔值 表示给定的值是否是一个有穷数
*/
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(-Infinity)); // false
console.log(Number.isFinite(0)); // true
console.log(Number.isFinite(2e64)); // true
console.log(Number.isFinite('0')); // false, 全局函数 isFinite('0') 会返回 true

2.Number.isInteger() 方法用来判断给定的参数是否为整数


/**
* Number.isInteger() 方法用来判断给定的参数是否为整数
* Number.isInteger(value)
* value 要判断此参数是否为整数
*
* 如果被检测的值是整数,则返回 true,否则返回 false。注意 NaN 和正负 Infinity 不是整数
* 返回值:判断给定值是否是整数的 Boolean 值
*/
console.log(Number.isInteger(0)); // true
console.log(Number.isInteger(1)); // true
console.log(Number.isInteger(-100000)); // true
console.log(Number.isInteger(0.1)); // false
console.log(Number.isInteger(Math.PI)); // false
console.log(Number.isInteger(Infinity)); // false
console.log(Number.isInteger(-Infinity)); // false
console.log(Number.isInteger("10")); // false
console.log(Number.isInteger(true)); // false
console.log(Number.isInteger(false)); // false
console.log(Number.isInteger([1])); // false

3.Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number


/**
* Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本
* Number.isNaN(value)
* value 要被检测是否是 NaN 的值
*
* NaN 最特殊的地方就是,我们不能使用相等运算符(== 和 ===)来判断一个值是否是 NaN,因为 NaN == NaN 和 NaN === NaN 都会返回 false
* 返回值:一个布尔值,表示给定的值是否是 NaN
*/
console.log(NaN == NaN); //false
console.log(NaN === NaN); //false
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(Number.NaN)); // true
console.log(Number.isNaN(0 / 0)); // true // 下面这几个如果使用全局的 isNaN() 时,会返回 true。
console.log(Number.isNaN("NaN")); // false,字符串 "NaN" 不会被隐式转换成数字 NaN。
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN({})); // false
console.log(Number.isNaN("blabla")); // false
console.log(isNaN("NaN")); // true
console.log(isNaN(undefined)); // true
console.log(isNaN({})); // true
console.log(isNaN("blabla")); // true

4.Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)


/**
* Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)
* Number.isSafeInteger(testValue)
* testValue 需要检测的参数
*
* 返回值:一个布尔值 表示给定的值是否是一个安全整数(safe integer)
*/
console.log(Number.isSafeInteger(3)); // true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // false
console.log(Number.isSafeInteger(Math.pow(2, 53) - 1)); // true
console.log(Number.isSafeInteger(NaN)); // false
console.log(Number.isSafeInteger(Infinity)); // false
console.log(Number.isSafeInteger("3")); // false
console.log(Number.isSafeInteger(3.1)); // false
console.log(Number.isSafeInteger(3.0)); // true

5.Number.parseFloat() 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同


/**
* Number.parseFloat() 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同
* Number.parseFloat(string)
* string 被解析的字符串
*/
console.log(Number.parseFloat("3.14")); //3.14
console.log(Number.parseFloat("314e-2")); //3.14
console.log(Number.parseFloat("0.0314E+2")); //3.14
console.log(Number.parseFloat("3.14more non-digit characters")); //3.14

6.Number.parseInt() 方法可以根据给定的进制数把一个字符串解析成整数。该方法和全局的 parseInt() 函数相同


/**
* Number.parseInt() 方法可以根据给定的进制数把一个字符串解析成整数。该方法和全局的 parseInt() 函数相同
* Number.parseInt(string[, radix])
* string 要被解析的值。
如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作),字符串开头的空白符将会被忽略
* radix 一个介于2和36之间的整数,表示上述字符串的基数
比如参数"10"表示使用我们通常使用的十进制数值系统
当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10
*
* 返回值:返回解析后的整数值。如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN
*/
console.log(Number.parseInt("015", 10)); //15
console.log(Number.parseInt("0xF", 16)); //15
console.log(Number.parseInt('017', 8)); //15
console.log(Number.parseInt("1111", 2)); //15
console.log(Number.parseInt(15.99, 10)); //15

三、Number实例方法

1.toExponential() 方法以指数表示法返回该数值字符串表示形式


/**
* toExponential() 方法以指数表示法返回该数值字符串表示形式
* numObj.toExponential(fractionDigits)
*
* fractionDigits 可选,一个整数,用来指定小数点后有几位数字。默认情况下用尽可能多的位数来显示数字
* 返回值:一个用幂的形式 (科学记数法) 来表示Number 对象的字符串
*/
let number1 = 777.1234;
console.log(number1.toExponential()); //输出 7.771234e+2
console.log(number1.toExponential(4)); //输出 7.7712e+2
console.log(number1.toExponential(2)); //输出 7.77e+2

2.toFixed() 方法使用定点表示法来格式化一个数


/**
* toFixed() 方法使用定点表示法来格式化一个数
* numObj.toFixed(digits)
*
* digits 小数点后数字的个数;介于0到20(包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0
*
* 返回值:所给数值的定点数表示法的字符串形式
*/
let number2 = 12345.6789;
console.log(number2.toFixed()); // 返回 "12346":进行四舍五入,不包括小数部分
console.log(number2.toFixed(1)); // 返回 "12345.7":进行四舍五入
console.log(number2.toFixed(6)); // 返回 "12345.678900":用0填充
console.log(-2.34.toFixed(1)); // 返回 -2.3 (由于操作符优先级,负数不会返回字符串)
console.log((-2.34).toFixed(1)); // 返回 "-2.3" (若用括号提高优先级,则返回字符串)

3.toPrecision() 方法以指定的精度返回该数值对象的字符串表示


/**
* toPrecision() 方法以指定的精度返回该数值对象的字符串表示
* numObj.toPrecision(precision)
*
* precision 可选。一个用来指定有效数个数的整数
*
* 返回值:以定点表示法或指数表示法表示的一个数值对象的字符串表示,四舍五入到 precision 参数指定的显示数字位数
*/
let number3 = 5.123456;
console.log(number3.toPrecision()); //输出 5.123456
console.log(number3.toPrecision(5)); //输出 5.1235
console.log(number3.toPrecision(2)); //输出 5.1
console.log(number3.toPrecision(1)); //输出 5 // 注意:在某些情况下会以指数表示法返回
console.log((1234.5).toPrecision(2)); // "1.2e+3"

4.toString() 方法返回指定 Number 对象的字符串表示形式


/**
* toString() 方法返回指定 Number 对象的字符串表示形式
* numObj.toString([radix])
*
* radix 指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10
*/
let count = 10;
console.log(count.toString()); // 输出 '10'
console.log((17).toString()); // 输出 '17'
console.log((17.2).toString()); // 输出 '17.2'
let x = 6;
console.log(x.toString(2)); // 输出 '110'
console.log((254).toString(16)); // 输出 'fe'
console.log((-10).toString(2)); // 输出 '-1010'
console.log((-0xff).toString(2)); // 输出 '-11111111'

5.valueOf() 方法返回一个被 Number 对象包装的原始值


/**
* valueOf() 方法返回一个被 Number 对象包装的原始值
* numObj.valueOf()
*
* 返回值:表示指定 Number 对象的原始值的数字
*/
let number4 = new Number(10);
console.log(typeof number4); // object
let num = number4.valueOf();
console.log(num); // 10
console.log(typeof num); // number

原文地址:https://segmentfault.com/a/1190000016723669

JavaScript基础对象---Number的更多相关文章

  1. 在TypeScript中扩展JavaScript基础对象的功能

    最近工作中用到,记录一下:假设我们需要一个功能,把一个数字比如10000输出为下面的字符串格式“10,000”,一般是写一个方法,那么我希望更方便一点,直接向Number类型添加一个格式化方法,比如叫 ...

  2. JavaScript基础-对象<2>

    2.浏览器环境提供对象 (1) document对象 doucument对象属性: title:文本标题.doucument.title="Welcome"; lastModifi ...

  3. JavaScript基础对象创建模式之对象的常量(028)

    虽然许多编程语言提供了const关键字来支持常量的声明,但JavaScript里没有表示常量的语义.我们可以用全大写的方式来声明变量,表明它实际上是个常量: Math.PI; // 3.1415926 ...

  4. JavaScript基础-对象<1>

    1.JavaScript内部对象属性和方法 (1)内置String对象 String 对象是JavaScript的核心对象之一. 创建一个sting对象: var a="this defin ...

  5. JavaScript基础对象创建模式之单体/单例模式(Singleton)

    首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向整个系统公开这个实例接口 Java中大 ...

  6. JavaScript基础对象创建模式之链式调用模式(Chaining Pattern)(029)

    链式调用模式允许一个接一个地调用对象的方法.这种模式不考虑保存函数的返回值,所以整个调用可以在同一行内完成: myobj.method1("hello").method2().me ...

  7. JavaScript基础对象创建模式之静态成员(027)

    在支持“类”的面向对象语言中,静态成员指的是那些所有实例对象共有的类成员.静态成员实际是是“类”的成员,而非“对象”的成员.所以如果 MathUtils类中有个叫 max()的静态成员方法,那么调用这 ...

  8. JavaScript基础对象创建模式之模块模式(Module Pattern)(025)

    模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件 ...

  9. JavaScript基础对象创建模式之私有属性和方法(024)

    JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: f ...

随机推荐

  1. bzoj 4622: [NOI 2003] 智破连环阵【dfs+匈牙利算法】

    一个炸弹炸一个区间的武器,想到二分图匹配 但是直接dfs断点显然不行,预处理出dis[i]为i到m的至多值来最优性剪枝,并且标记ok[i][j]为炸弹i可以炸到j武器,mx[i][j]为i炸弹从j武器 ...

  2. PyCharm - 格式化代码 (Reformat Code)

    1. Ctrl + A全选代码. 2. Code -> Reformat Code

  3. Ubuntu 设置文件默认打开的应用

    右键单击该文件,然后点击属性,打开属性面板 然后进入open with的选项,选择应用后,点击 set as default

  4. SpringBoot的配置文件加载顺序以及如何获取jar包里的资源路径

    一.读取配置文件的四种方式 这四种配置文件放置方式的读取优先级依次递减,具体可以查看官方文档. 1.1jar包同级目录下的config文件夹里的配置文件 其实我以前就见过这种方式了,只是不知道怎么做的 ...

  5. hibernate Day1 案例代码

    1.创建Person类 package com.icss.pojo; public class Person { private int uid; private String uname; priv ...

  6. C. Molly's Chemicals 暴力 + 统计技巧

    http://codeforces.com/contest/776/problem/C 一开始做的时候,就发现是预处理前缀和,然后对于每一个前缀和,如果他能成为一个贡献,就是能和前面的某些段 组合成和 ...

  7. 微信环境支付宝服务窗环境app手机浏览器pc端混合判断

    //微信环境 if(userAgent.match(/micromessenger/) == 'micromessenger'){ }//支付宝服务窗环境else if(userAgent.match ...

  8. P1984 [SDOI2008]烧水问题

    题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...

  9. 使用gitblit 在windows平台搭建git服务器

    1.下载jdk,安装并且配置好环境变量 2.下载gitblit 直接解压无需安装 3.配置gitblit 1.修改gitblit安装目录下的data文件下的gitblit.properties.将in ...

  10. Backbone.js之Todo源码浅析

    相信每个接触了解过backbone的人都知道todo,网上的关于它的分析教程也都分析乱了.但是,知识只有自己学习领悟才是自己的,话不多说,正文开始. 在分析todo的源码之前,首先我们要知道todo具 ...