Number的属性和方法Number(value)//创建一个数字对象letn=newNumber(10)//{10}//类型转换Number("10")//10Number("0x11")//17Number("-Infinity")//-InfinityNumber("0A")//NaNNumber(10n)//属性Number.EPSILONNumber.MIN_VALUENumber.MAX_VALUENumber.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGERNumber.MAX_SAFE_INTEGERNumber.NEGATIVE_INFINITYNumber.POSITIVE_INFINITY1.1Number.EPS表示的差值浮点数2-522**(-52)==Number.EPSILON//true1.2Number.MIN_VALUENumber.MAX_VALUEMIN_VALUE最接近0的正值约5-324MAX_VALUE最大值约1.79308大于的值MAX_VALUE是Infinity1.3Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGERMIN_SAFE_INTEGER是最小安全整数-(253-1)MAX_SAFE_INTEGER是最大安全整数253-1Number.MIN_SAFE_INTEGER==-(2**(53)-1)//trueNumber。MAX_SAFE_INTEGER==2**(53)-1//true1.4Number.NEGATIVE_INFINITYNumber.POSITIVE_INFINITYNEGATIVE_INFINITY:-InfinityPOSITIVE_INFINITY:Infinity0乘以两者都是NaN两者相除均为NaN任何数除以两者都只为0判断无穷时,建议使用Number.isFinite()Number.isInteger()Number.isInteger()方法。isSafeInteger()Number.isNaN()Number.ponNumberarseInt()Number.parseFloat()2.1Number.isFinite(value)isFinite(value)是有限的//无限的让n1=-InfinityNnmber.isFinite(n1)//falseisFinite(n1)//false//有限的让n2=0Nnmber.isFinite(n2)//trueisFinite(n2)//true//stringletn3='0'Nnmber.isFinite(n3)//falseisFinite(n3)//trueisFinite()有类型转换,建议使用但是无法将bigInt转换为Number2.2Number.isInterger(value)Number.isSafeInteger(value)是否为整数Number.isInteger(2**100)//trueNumber.isInteger('0')//falseNumber.isInteger(0.1)//falseNumber.isSafeInteger(2**100)//false2.3Number.isNaN(value)isNaN(value)判断是否为非数字//普通字符串Number.isNaN('a')//falseisNaN('a')//true//NaNstringNumber.isNaN('NaN')//falseisNaN('NaN')//true//ValuestringNumber.isNaN('10')//falseisNaN('10')//falseNumber.isNaN()不进行类型转换,为NaN时返回true,非Number类型则返回falsetrue,也不支持bigInt2.4Number.parseInt(string,radix)Number.parseFloat(string)期望接收一个字符串进行转换/***无小数参数*///stringparseInt("011x")//11parseInt("0x11")//17//numberparseInt(011)//9parseInt(0b11)//3parseInt(0x11)//17/***有十六进制参数*///StringparseInt("011x",8)//9//NumberparseInt(011,8)//NaN011->"9当"->NaN没有基数参数,参数一是字符串:识别十进制或十六进制(以0x开头)并转为十进制。参数一是数字:识别2、8、16进制,convert十进制转成字符串。有基数参数时,2-36参数为字符串:截取指定基数的字符串,转为十进制参数。第一个参数是一个数字:先识别基数,将其转换为10,然后将基数转换为字符串,再以字符串的形式进行上述操作。Number的类型转换与全局的相同。建议将这两种方法简写。它会先截取之前合法的部分进行转换。parseFloat()将字符串转换为Decimal或NaN3原型上的方法.prototype.valueOf()3.1toFixed(digits)定点表示法格式化一个值,返回0-20位数字的字符串,默认为0,解决小数转二进制后求和不准确//四舍五入2.55.toFixed(1)//"2.5"2.35.toFixed(1)//"2.4"//解决精度问题0.1+0.2//0.300000000000000004parseFloat((0.1+0.2).toFixed(10))//0.3toFixed()会舍入时由于精度问题不准确,但仅当保留位的下一位为5时,求和的误差值往往是小值或小值。toFixed完全可以满足日常需求。3.2toPrecision(precision)保留有效数字(从第一个不为0的数字开始)返回字符串精度1-100//向上取整2.35.toPrecision(2)//"2.4"2.55.toPrecision(2)//"2.5"//返回指数225.55.toPrecision(2)//"226"leta=225.55.toPresolution(2)//"2.3e+2"parseFloat(a)//230parseInt(a)//2toPrecison的四舍五入和toFixed一致。当有效位数小于整数位时,返回指数。parseFloat可以将指数3.3形式的字符串转换为Exponential(fractionDigits)索引表示法,指定小数点后的位数并返回字符串fractionDigits0-20//四舍五入2.35.toExponential(1)//"2.4e+0"2.55.toExponential(1)//"2.5e+0"//指数表示225.55.toExponential(1)//"2.3e+2"225.55.toExponential(2)//"2.26e+2"0.0035.toExponential(2)//"3.50e-3"四舍五入与toFixed一致与toPrecision相比,toExponential总是返回一个只有一位指数的整数。在表示指数时,两者都会使用第一个非零数作为整数位。3.4toLocaleString(locales,options)locales下数字转换为特定locale字符串:'en-IN'印度分隔'zh-Hans-CN-u-nu-hanidec'中文小数分隔'ar-EG'阿拉伯数字...options:style:decimalpurenumberformat(默认)currencycurrencyformatUSDEURCNYpercentformatunitunitformat(测试中)minimumIntegerDigits最小整数位数1-21minimumFractionDigits最小小数位数0-20maximumFractionDigits最大小数位数0-20purenumber默认为3minimumSignificantDigits有效位数最小位数1-21maximumSignificantDigits最大有效位数1-21所有参数详见MDNString('zh-u-nu-hanidec')//一,二三四。五六八a.toLocaleString('ar-EG')//?????????//选项参数n.toLocaleString('zh-u-nu-hanidec',{maximumFractionDigits:10})//一,二,三、四、五、六、七、八默认保留小数位数为3,相当于toFixed(3)四舍五入与toFixed一致3.5toString(radix)转换为指定基数2-36的字符串defaultsto10//默认值(11).toString()//'11'0b11.toString()//'3'0o11.toString()//'9'011.toString()//'9'0x11.toString()//'17'//指定基数0.1.toString(2)//'0.0001100110011001100110011001100110011001100110011001101'0x10.toString(16)//'10'先识别数字的基数然后转为指定基数的字符串,你可以看到0.1被转换为二进制作为一个无限循环的小数,这可以解释为什么0.1+0.2!=0.3valueOf()将一个数字对象转换为一个原始值leta=newNumber("10")letb=A。valueOf()控制台。日志(a,b)//{10}10
