RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 633464
Accepted
user238662
user238662
Asked:2020-02-28 15:47:25 +0000 UTC2020-02-28 15:47:25 +0000 UTC 2020-02-28 15:47:25 +0000 UTC

ParseInt、ParseFloat 和 Number 之间的区别

  • 772

大家好!函数ParseFloat,ParseInt和 和有什么不一样Number?作为这些函数的结果,字符串被转换为数字。

alert('3' + 2);
//--------------------------//
alert(parseFloat('3') + 2);
alert(parseInt('3') + 2);
alert(Number('3') + 2);

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Grundy
    2020-02-28T15:50:56Z2020-02-28T15:50:56Z

    简而言之:

    parseFloat并将parseInt最大对应子串转换为数字,从字符串的开头开始,预先丢弃空白字符。

    Number- 整行,也预先丢弃空白字符。

    可以在示例中看到差异

    //--------------------------//
    console.log(parseFloat('3a'));
    console.log(parseInt('3a'));
    console.log(Number('3a'));


    详细回复

    为了更完整地了解差异,您可以参考规范

    您可以从Number 构造函数开始

    如果在没有 的情况下调用此函数new,则

    1. 如果没有传递参数,结果将是+0
    2. 如果传入参数(value),则返回调用ToNumber(value)的结果

    其中ToNumber(value)是一个抽象函数,当需要检索数值时调用该函数。

    值得注意的是,与下面讨论的函数不同,参数value仅在某些情况下才会转换为字符串。

    如果value转换为字符串,则该字符串必须满足StringNumericLiteral 的语法。此语法与通常定义数字文字规则的NumericLiteral之间的区别在于:

    • StringNumericLiteral可能包括前导和/或尾随空格和/或行分隔符。
    • 十进制形式的StringNumericLiteral可以有任意数量的前导零。
    • 十进制的StringNumericLiteral可以包含+或-指示数字的符号。
    • 具有空字符串或仅包含空白字符的StringNumericLiteral+0将被转换为.
    • Infinity和-Infinity将被识别为StringNumericLiteral,而不是NumericLiteral。

    parseInt 函数

    此函数的一个显着特征是能够将字符串中数字所在的数字系统的基数作为第二个参数传递。默认情况下,此参数的值为 10。

    请注意,第一个参数始终转换为字符串。

    这个函数的算法很简单:

    1. 从字符串开头去除空白字符
    2. 数的符号确定
    3. 如果基数为 16 或未通过,则设置一个标志以丢弃前缀。
    4. 如果要删除前缀:
      1. 如果前两个字符是0x或0X ,则丢弃它们
      2. 基数设置为 16
    5. 如果字符串包含不对应于基数的字符,则在第一个这样的字符之前选择子字符串。
    6. 计算对应于所选子串的数学整数值。符号 AZ 和 az 用于表示各自数字系统中从 10 到 35 的值。
    7. 结果乘以符号并返回。

    可以看到,与上面描述的Number函数不同,不是使用整个字符串来解析,只识别十六进制数字的前缀,而是增加了指定从 2 到 36 的数字系统的基数的能力。


    parseFloat 函数

    与在parseInt中一样,此函数始终将其参数转换为字符串。

    该算法类似于parseInt函数的工作

    1. 从字符串开头去除空白字符
    2. 确定剩余字符串或其任何前缀是否满足StrDecimalLiteral 语法
      1. 如果不是,则返回NaN
      2. 如果是,则取最大前缀。
    3. 返回相应的数字。

    可以看到,与Number相比,字符串的一部分用于解析,不允许使用0x、0b、0o之类的前缀。与parseInt不同,允许使用e -notation 。


    更多例子

    function showOutput(str, base) {
      console.log('строка:"' + str + '"', 'Number:', Number(str), 'parseInt:', parseInt(str, base), 'base:', base || 10, 'parseFloat:', parseFloat(str));
    }
    
    showOutput('  ');
    showOutput('10');
    showOutput('3a');
    showOutput('0x10');
    showOutput('0x10s');
    showOutput('0o10');
    showOutput('1e2');
    showOutput('1e2', 16);
    .as-console-wrapper {
      max-height: 100% !important;
      top: 0;
    }

    • 12

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5