freeCodeCamp/guide/chinese/javascript/converting-strings-to-numbers/index.md

4.6 KiB
Raw Blame History

title localeTitle
Converting Strings to Numbers 将字符串转换为数字

将字符串转换为数字

parseInt()函数解析字符串参数并返回指定基数的整数(数学系统中的基数)。

    parseInt(string, radix); 

参数

string 

要解析的值。如果string参数不是字符串,则将其转换为字符串(使用ToString抽象操作)。字符串参数中的前导空格被忽略。'= 基数 2到36之间的整数表示上述字符串的基数数学数字系统中的基数。为人类常用的十进制数字系统指定10 。始终指定此参数以消除读者混淆并保证可预测的行为。当未指定基数时不同的实现会产生不同的结果通常将值默认为10。 返回值 从给定字符串解析的整数。如果第一个字符无法转换为数字,则返回NaN

描述

parseInt函数将其第一个参数转换为字符串,对其进行解析,并返回一个整数或NaN 。如果不是NaN 则返回的值将是作为指定基数基数中的数字的第一个参数的整数。例如10的基数表示从十进制数8八进制16十六进制等转换。对于大于10的基数字母表中的字母表示大于9的数字。例如对于十六进制数字基数16使用AF

如果parseInt遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。 parseInt将数字截断为整数值。允许前导和尾随空格。

由于某些数字在其字符串表示中包含e字符(例如6.022e23 ),因此使用parseInt截断数值会在非常大或非常小的数字上使用时产生意外结果。 parseInt不应该用作Math.floor()的替代品。

如果radix undefined或0或不存在则JavaScript假定以下内容

  • 如果输入string以“0x”或“0X”开头则基数为16十六进制并解析字符串的其余部分。
  • 如果输入string以“0”开头则基数为八八进制或10十进制。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10十进制但并非所有浏览器都支持此功能。因此在使用parseInt时始终指定基数。
  • 如果输入string以任何其他值开头则基数为10十进制
  • 如果第一个字符无法转换为数字则parseInt返回NaN。

出于算术目的NaN值不是任何基数中的数字。您可以调用isNaN函数来确定parseInt的结果是否为NaN。如果将NaN传递给算术运算则运算结果也将是NaN。

要将数字转换为特定基数中的字符串文字请使用intValue.toStringradix

例子

使用parseInt 以下示例均返回15

    parseInt(' 0xF', 16); 
    parseInt(' F', 16); 
    parseInt('17', 8); 
    parseInt(021, 8); 
    parseInt('015', 10);   // parseInt(015, 10); will return 15 
    parseInt(15.99, 10); 
    parseInt('15,123', 10); 
    parseInt('FXX123', 16); 
    parseInt('1111', 2); 
    parseInt('15 * 3', 10); 
    parseInt('15e2', 10); 
    parseInt('15px', 10); 
    parseInt('12', 13); 

以下示例均返回NaN

    parseInt('Hello', 8); // Not a number at all 
    parseInt('546', 2);   // Digits are not valid for binary representations 

以下示例都返回-15

    parseInt('-F', 16); 
    parseInt('-0F', 16); 
    parseInt('-0XF', 16); 
    parseInt(-15.1, 10) 
    parseInt(' -17', 8); 
    parseInt(' -15', 10); 
    parseInt('-1111', 2); 
    parseInt('-15e1', 10); 
    parseInt('-12', 13); 

以下示例均返回4

    parseInt(4.7, 10); 
    parseInt(4.7 * 1e22, 10); // Very large number becomes 4 
    parseInt(0.00000000000434, 10); // Very small number becomes 4 

以下示例返回224

    parseInt('0e0', 16); 

更多信息:

MDN上的parseInt

  • parseIntparseFloat尝试将字符串转换为数字(如果可能)。例如, var x = parseInt("100"); // x = 100
  • Number将转换为值可以表示的数字。这包括自UTC时间1970年1月1日午夜以来的毫秒数布尔值为1或0的日期以及无法转换为可识别数字的值将变为NaN。这代表Not a Number在技术上也是一个数字