JavaScript中的内置函数parseInt和parseFloat

时间:2022-08-25 16:04:32

1、使用内置函数 parseInt() 将字符串转换为整型。该函数的第二个参数表示字符串所表示数字的基(进制):

parseInt("123", 10); // 123
parseInt("010", 10); //10

如果调用时没有提供第二个参数(字符串所表示数字的基),2013 年以前的 JavaScript 实现会返回一个意外的结果:

parseInt("010");  // 8 (2013之前的)
parseInt("010");  // 10 (现在的默认十进制)
parseInt("0x10"); // 16

这是因为字符串以数字 0 开头,parseInt() 函数会把这样的字符串视作八进制数字;同理,0x开头的字符串则视为十六进制数字。

如果想把一个二进制数字字符串转换成整数值,只要把第二个参数设置为 2 就可以了:

parseInt("11", 2); // 32、内置函数 parseFloat(),用以解析浮点数字符串,与parseInt()不同的地方是,parseFloat()只应用于解析十进制数字。

单元运算符 + 也可以把数字字符串转换成数值:

+ "42";   // 42+ "010";  // 10+ "0x10"; // 16

如果给定的字符串不存在数值形式,函数会返回一个特殊的值 NaN(Not a Number 的缩写):

parseInt("hello", 10); // NaN

要小心NaN:如果把 NaN 作为参数进行任何数学运算,结果也会是 NaN

NaN + 5; //NaN

可以使用内置函数 isNaN() 来判断一个变量是否为 NaN

isNaN(NaN); // true

JavaScript 还有两个特殊值:

Infinity(正无穷)和 -Infinity(负无穷):

1 / 0; // Infinity-1 / 0; // -Infinity

可以使用内置函数 isFinity()来判断一个变量是否是一个有穷数, 如果类型为Infinity, -InfinityNaN则返回false

isFinite(1/0); // false isFinite(Infinity); // false isFinite(NaN); // false isFinite(-Infinity); // false isFinite(0); // true isFinite(2e64); // true isFinite("0"); // true,如果是纯数值类型的检测,则返回false:Number.isFinite("0");
备注: parseInt() 和 parseFloat() 函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有
数字字符组成的数字。使用运算符 "+" 将字符串转换成数字,只要字符串中含有无法被解析成数字的字符,该字符串都将被转换成 NaN
parseInt("11.1as"); // 11
+ "11.1ss" ; //NaN