js中number的数据范围,js中number对象的方法

本文详细解释了JavaScript中number类型的特点,包括整数、小数、无限大和NaN,介绍了解决小数精度问题的方法,以及各种数据类型转换为数值的技巧,如强制转换、显示转换和隐式转换。同时涵盖了Math对象中的常用数学函数如abs、sign、trunc等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,小编为大家解答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()对于非数值一律返回falseNumber.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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值