大家好,小编为大家解答js中number的数据范围的问题。很多人还不知道js中number对象的方法,现在让我们一起来看看吧!
1.JavaScript中数值类型:不会定义不同类型的数,比如整数、短的、长的、浮点的等。JavaScript 数值始终以双精度浮点数来存储
2.number类型包含:整数、小数、infinite、-infinite、nan(not a number)
3.小数精度丢失问题的解决方法?
3.1将小数乘整十数或整百数,运算完成再除去整十整百
3.2使用toFixed(n) n表示保留n位小数,并且toFixed返回的是string类型
4.在运算时,会现将其他数据类型转换为数值类型再进行运算GPT改写。字符串和数字相加是拼接 结果为字符串
5.将其他数据类型转换数值类型的方法:
5.1强制转换:Number(xxx)
非空字符串:0;
空字符串:0;
字符串:nan
布尔类型:true、false
null:0
undefined:nan
console.log(Number(""));//空字符串 0
console.log(Number(" "));//非空字符串 0
console.log(Number("123"));//123
console.log(Number("12x3"));//NaN
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(null));//0
console.log(Number(undefined));//NaN
5.2显示转换:parseInt()、parseFloat()
5.2.1 parseInt():返回整数部分,若前面有0则会忽略,以第一个.为准,第一个字符就是非数值直接返回nan,遇到非数字字符停止,返回值只有整数或nan
console.log(parseInt("1.234abc"));//
console.log(parseInt("09.294abc"));//9
console.log(parseInt("09.29.4abc"));//9
console.log(parseInt("abc123"));//NaN
console.log(parseInt("1abc123"));//1
console.log(parseInt("Infinity"));//NaN
console.log(parseInt(true));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt(undefined));//NaN
5.2.2 parseFloat():返回整数部分,若前面有0则会忽略,以第一个.为准,第一个字符就是非数值直接返回nan,遇到非数字字符停止,返回值有数值或nan、-infinite、-infinite
console.log(parseFloat("1.234abc"));//1.234
console.log(parseFloat("09.294abc"));//9.294
console.log(parseFloat("09.29.4abc"));//9.29
console.log(parseFloat("abc123"));//NaN
console.log(parseFloat("1abc123"));//1
console.log(parseFloat("Infinity"));//Infinity
console.log(parseFloat("-Infinity"));//-Infinity
console.log(parseFloat(true));//NaN
console.log(parseFloat(null));//NaN
console.log(parseFloat(undefined));//NaN
5.3隐式转换:加减乘除 + - * /
console.log("10" - 5); //5 Number("10") - 5
console.log("abc123" - 5); //NaN
console.log("123abc" - 5); //NaN
6.number的方法
6.1isNaN() 判断数值是不是NaN。是NaN结果为true 不是为false
console.log(isNaN(NaN));//true
console.log(isNaN("hello"));//true
console.log(isNaN(""));//false
console.log(isNaN("typeof" / 10));//true
console.log(isNaN(Infinity));//false
6.2.Number.
isFinite() 用来检查一个数值是否为有限的(finite),即不是Infinity。(es6)
Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite('15'); // false
Number.isFinite(true); // false
6.3 Number.isNaN()
用来检查一个值是否为NaN。(es6)
Number.isNaN(NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true' / 0) // true
Number.isNaN('true' / 'true') // true
补充:isFinite()
和isNaN()
的区别在于,传统方法先调用Number()
将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,Number.isFinite()
对于非数值一律返回false
, Number.isNaN()
只有对于NaN
才返回true
,非NaN
一律返回false
。
6.4 Number.parseInt(), Number.parseFloat()。(es6)
// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45
// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45
//这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。
Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true
6.5 Number.isInteger()
用来判断一个数值是否为整数。(es6)
Number.isInteger(25) // true
Number.isInteger(25.1) // false
//如果参数不是数值,Number.isInteger返回false
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false
7. Math 对象的扩展
7.1 Math.trunc
方法用于去除一个数的小数部分,返回整数部分(es6)
Math.trunc(4.1) // 4
Math.trunc(4.9) // 4
Math.trunc(-4.1) // -4
Math.trunc(-4.9) // -4
Math.trunc(-0.1234) // -0
//对于非数值,Math.trunc内部使用Number方法将其先转为数值
Math.trunc('123.456') // 123
Math.trunc(true) //1
Math.trunc(false) // 0
Math.trunc(null) // 0
//对于空值和无法截取整数的值,返回NaN
Math.trunc(NaN); // NaN
Math.trunc('foo'); // NaN
Math.trunc(); // NaN
Math.trunc(undefined) // NaN
7.2 Math.sign
方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。(es6)
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN
//如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回NaN
Math.sign('') // 0
Math.sign(true) // +1
Math.sign(false) // 0
Math.sign(null) // 0
Math.sign('9') // +1
Math.sign('foo') // NaN
Math.sign() // NaN
Math.sign(undefined) // NaN
7.3 Math.abs()函数,返回一个数的绝对值 。(es5)
Math.abs(-10)// 10
7.4 Math.ceil()函数,返回大于或等于一个给定数的最小整数。(es5)
Math.ceil(5.4) // 6
7.5 Math.cos()函数,返回一个值的余弦值/Math.sin()函数,返回一个值的正弦值。(es5)
Math.cos(0 * Math.PI / 180)// 1
Math.sin(90 * Math.PI / 180)// 1
7.6 Math.floor()方法,向下取整。返回小于或等于一个给定数字的最大整数。(es5)
Math.floor(5.7) // 5
Math.floor(8.6)// 8
7.7 Math.min()方法,是可以返回指定一组数据中最小值。 (es5)
Math.min( 0, 100, -200, -140)//-200
Math.min()// 如果没有参数,则结果为Infinity
Math.min([99, 32], -2, -3) // 如果有一项参数不能被转为数值,则结果为NaN // NaN
7.8 Math.max()方法,是可返回指定数据中最大值。 (es5)
Math.max(0, 100, -200, -140) // 100
Math.max() // 如果没有参数,则结果为-Infinity // -Infinity
Math.max([99, 32], -2, -3) // 如果有一项参数不能被转为数值,则结果为NaN // NaN
7.9Math.round(),返回的是一个数字四舍五入的整数。 (es5)
Math.round(5.7) // 6
Math.round(5.4) // 5
7.10Math.random()函数,返回一个[0,1)的随机数。(es5)
Math.random()