JS中Number()、parseInt()和parseFloat()的区别,和toFixed() 的用法。

本文详细讲解了JavaScript中的toFixed方法用于四舍五入数值、Number函数的全面转换能力、parseInt和parseFloat处理字符串转换的不同之处。重点介绍了这些函数在数值处理中的应用场景和规则差异。

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

一、 toFixed() 方法

可把 Number 四舍五入为指定小数位数的数字。
规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

toFixed()方法四舍五入取指定位数的小数点,当其中参数为0时表示不留小数点
 
let num=3.1415926
console.log(num.toFixed(2));  //输出3.14
console.log(num.toFixed(0));     //输出3
num1=9.66;
console.log(num1.toFixed(0));     //输出10

区别:Number(): 可以用于任何数据类型转换成数值;
parseInt()、parseFloat(): 专门用于把字符串转换成数值;

二、Number( )

1.参数为布尔值Boolean时,true为1,false为2
2.参数为null,返回0
3.参数为undefined,返回NaN
4.数字则转换成对应的数值

Number(true); // 1    布尔值
Number(false); // 0

Number(null); // 0

Number(undefined); // NaN

Number(1); // 1
Number(-0.1); // -0.1

5.参数为字符串String时

// 1. 当字符串中有字母时
Number("abc"); // NaN
Number("abc123"); // NaN
Number("123abc"); // NaN

// 2. 当字符串中只有数字时(数字前可以有正负号)
Number("123"); // 123
Number("+123"); // 123
Number("-123"); // -123
Number("0123"); // 123 忽略前导0

// 小数
Number("1.23"); // 1.23

// 十六进制数会转为十进制
Number("0xf"); // 15

// 空字符串转为0
Number(""); // 0

6.参数为对象,
则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果为NaN,则调用对象的toString()方法,然后再按照前面的规则转换返回的字符串值。

// 数字数组
Number([1, 2]); // NaN
Number([1]); // 1

// 字符串数组
Number(["1", "2"]); // NaN
Number(["1"]); // 1
Number(["a"]); // NaN
Number([null]); // 0

三、parseInt( )

parseInt()函数可以将字符串转换成一个整数,与Number()函数相比,parseInt()函数不仅可以解析纯数字字符串,也可以解析以数字开头的部分数字字符串(非数字部分字符串在转换过程中会被去除)。

1.参数为Boolean时,返回NaN

parseInt(true); // NaN
parseInt(false); // NaN

2.参数为String时,一个字符一个字符解析,直到解析完或遇到第一个非数字字符。
注:小数点也不是有效的数字字符。

// 既有数字,又有字符
parseInt("abc123"); // NaN
parseInt("123abc"); // 123

// 整数
parseInt("000123"); // 123 忽略前导0

// 小数
parseInt("1.23"); // 1

// 十六进制,第二个参数指定转换时使用的基数(即几进制)
parseInt("0xAF"); // 175
parseInt("AF"); // NaN
parseInt("0xAF", 16); // 175 指定按十六进制解析
parseInt("AF", 16); // 175 指定按十六进制解析

// 八进制
parseInt("070"); // 70 ES5认为其为70(十进制)
parseInt("70"); // 70
parseInt("070", 8); // 56 指定按八进制解析
parseInt("70", 8); // 56 指定按八进制解析

// 空字符
parseInt(""); // NaN

3.参数为对象

// 数组,解析第一个值
parseInt([1,2]); // 1
parseInt([1, "a"]); // 1
parseInt(["a", 1]); // NaN

链接: 参考

四、parseFloat( )

与parseInt()一样,parseFloat()也可以解析以数字开头的部分数字字符串(非数字部分字符串在转换过程中会被去除)。
与parseInt()不同的是,parseFloat()可以将字符串转换成浮点数;但同时,parseFloat()只接受一个参数,且仅能处理10进制字符串。
(1)字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。
(2)如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后面都是零),parseFloat()会返回整数。
1.参数为Boolean时,返回NaN

parseFloat(true); // NaN
parseFloat(false); // NaN

2.参数为String时,一个字符一个字符解析,直到解析完或遇到一个无效的浮点数字字符为止。
即:字符串中第一个小数点是有效的,第二个小数点是无效的。
注:parseFloat()无第二个参数,不能解析十六进制数。

// 既有数字,又有字符
parseFloat("123.456abc"); // 123.456
parseFloat("abc123.456"); // NaN

// 小数
parseFloat(".456"); // 0.456
parseFloat("000012.34"); // 12.34 忽略前导0
parseFloat("123.456.789"); // 123.456 第二个小数点无效
parseFloat("1.23e5"); // 123000

// 十六进制
parseFloat("0xAF"); // 0

// 空字符
parseFloat(""); // NaN

五、总结

  1. Number()能转换boolean值,null,只含整数或小数的字符串,空字符串,对象。
  2. parseInt()按字符解析,直到遇见第一个非数字字符为止。
  3. parseFloat()按字符解析,直到遇见一个无效的浮点数字字符为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值