// 01Number对象的创建
// 字面量
var num=10;
console.log(num);
console.log(typeof num);
// new关键字
// var num2=new Number(value)
// 当参数的值不能转换为数字时,将返回NaN
var num2=new Number(100);
console.log(num2);
console.log(typeof num2);
var num3=new Number("100");
console.log(num3);
var num4=new Number("hello");
console.log(num4);// NaN: Not a Number
// 02Number对象的精度进制
// js中 只用一种数字类型 包含整数和小数(浮点型)
var num1=100;
var num2=100.0;
// 科学计数法 极大的或绩效的数字可以使用科学(指数)计数法表示
// e:10的次方/次幂
var a=12300000000000;
var b=123e11;
console.log(a);
console.log(b);
console.log(a===b);
var c=0.00000000000123;
var d=1.23e-12;
console.log(c);
console.log(d);
// 精度
// 整数(不适用于小数点或科学计数法) 最多15位
var x=999999999999999;
var y=9999999999999999;
console.log(x);
console.log(y);
// 小数
// 最大位数17位 运算不能保证100%准确
// var n=0.0000000000000001;
// var m=0.00000000000000012;
// console.log(n);
// console.log(m)
console.log(0.1+0.2);//0.30000000000000004
// 十进制转换为二进制 二进制转换为十进制 出现了偏差
// 进制
// 十进制 逢十进一 默认
var i=210;//0*1+1*10+2*10*10
// 十六进制 逢十六进一 前缀0x 0123456789abcdef
var j=0xaa;//10*1+10*16
console.log(j);
// 八进制 前缀 0
var k=0211;//1*1+1*8+2*8*8
console.log(k);//137
// 二进制
// 进制的转换 toString(进制)
var m=20;
console.log(m.toString(8));//24 4*1+2*8
console.log(m.toString(16));//14 4*1+1*16
console.log(m.toString(2));//10100 0*1+0*2+1*2*2+0*2*2*2+1*2*2*2*2
console.log(j.toString(10));// 170
// 03Number对象的属性
// constructor 返回对创建此对象的 Number 函数的引用。
// prototype 允许您可以向对象添加属性和方法。
console.log(Number.prototype);
// MAX_VALUE 可表示的最大的数。
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
// MIN_VALUE 可表示的最小的数。
console.log(Number.MIN_VALUE);//5e-324
// NEGATIVE_INFINITY 负无穷大,溢出时返回该值。
console.log(Number.NEGATIVE_INFINITY);//-Infinity
console.log(-1/0);
// POSITIVE_INFINITY 正无穷大,溢出时返回该值。
console.log(Number.POSITIVE_INFINITY);//Infinity
console.log(2/0);
console.log(2/0===Number.POSITIVE_INFINITY);
// NaN 非数字值
console.log(Number.NaN);
var a=NaN;
var b=NaN;
console.log(a==b);// false
// ES6新增的
// 表示在 JavaScript 中最大的安全整数(253 - 1)。
console.log(Number.MAX_SAFE_INTEGER);//9007199254740991
// 表示在 JavaScript 中最小的安全整数(253 - 1)。
console.log(Number.MIN_SAFE_INTEGER);//-9007199254740991
// EPSILON: 表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别
console.log(Number.EPSILON);//2.220446049250313e-16
// 04Number对象的方法
// toString() 把数字转换为字符串,使用指定的基数。
// valueOf() 返回一个 Number 对象的基本数字值。
console.log(Number.prototype);
// toExponential() 把对象的值转换为指数(科学)计数法
console.log((123.0000000001).toExponential());//1.230000000001e+2
// toFixed() 把数字转换为字符串,结果的小数点后有指定位数的数字。
console.log((123.12737461891).toFixed(2));
// toPrecision() 把数字格式化为指定的长度。
console.log((123.12737461891).toPrecision(5));
// isFinite(参数) 检测指定参数是否不为无穷大。 参数为NaN 或是正负无穷返回false 其他返回 true
console.log(Number.isFinite(123));
// isNaN(参数) 判断参数是否不是一个数字
console.log(Number.isNaN("aaaa"));
// 用来判断给定的参数是否为整数。
console.log(Number.isInteger(100.111))
// 判断传入的参数值是否是一个"安全整数"。
console.log(Number.isSafeInteger(9007199254740992))