JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法!下面本篇文章就来介绍一下JavaScript字符串转数字的5种方法及其陷阱,希望对大家有所帮助。

String 转换为 Number 有很多种方式,我可以想到的有 5 种!parseInt(num); // 默认方式 (没有基数)

parseInt(num, 10); // 传入基数 (十位数)

parseFloat(num); // 浮点数

Number(num); // Number 构造器

~~num; //按位非

num / 1; // 除一个数

num * 1; // 乘一个数

num -

0 + // 减去0

num; // 一元运算符 "+"

选择哪一种呢?什么时候选择它?为什么选择这种它?我们逐一进行分析,并解析每种方式的常见陷阱。

parseInt

根据 JsPerf.com 的基准测试,大多数浏览器对 parseInt 的响应最佳。虽然它是最快的方式,但使用 preseInt 会碰到一些常见陷阱:parseInt("08"); // returns 0 部分老浏览器.

parseInt("44.jpg"); // returns 44

parseInt: 没有传入基数时,默认是传入的基数为 10 parseInt(num, 10),如果你不知道 num 属性的类型,不要使用 parseInt 进行字符串转数字。

parseFloat

如果你不解析 16 进制数,这是一个非常好的选择。例如:parseInt(-0xff); // returns -255

parseInt("-0xFF"); // returns -255

parseFloat(-0xff); // returns -255

parseFloat("-0xFF"); // returns 0

注意:字符串中的负十六进制数字是一个特殊情况,如果你用 parseFloat 解析,结果是不正确的。为了避免程序出现 NaN 的情况,应该检查转化后的值。parseFloat("44.jpg"); // return 44

parseFloat: 转换十六进制数时要小心,如果你不知道要转换对象的类型,不要使用 parseFloat。

按位非

可以把字符串转换成整数,但他不是浮点数。如果是一个字符串转换,它将返回 0;~~1.23; // returns 1

~~"1.23"; // returns 1

~~"23"; // returns 23

~~"Hello world"; // returns 0

这是什么原理?通过翻转每个位,也称为数字的 A1 补码。你可以使用它,但注意只能用来存储整数。所以通常情况不要用它,除非你能确定这个数是在 32 位整数之间的值(因为调用的 ToInt32 的规范)。

按位非:用它确保输入中没有字符,仅用于整数。

Number

Number 与以上提及的转换方式一样存在这样的问题,解析时试图找出你给他的数字:Number("023"); // returns 23

Number(023); // returns 19

注意:023 实际上是一个八进制数,无论你怎么做,都是返回 19;对于没有单引号或双引号的十六进制数一样。

Number 也是 JsPerf 中最慢的之一。

Number:几乎不用它。

一元云算符"1.23" * 1; // returns 1.23

"0xFF" - 0; // returns 255

"0xFF.jpg" / 1 + // returns NaN

"023"; // returns 23

一元运算符与其它的解析方式不同,如果是一个 NaN 值,那么返回的也是 NaN 。这是我最喜欢的数值转换方式,因为我认为任何带有字符的对象都不应该被视为 0 或者根据他有多少位来“猜”。我基本使用 + 操作符,因为这个方式不容易混淆。虽然 -0 的用法也很好,但它并没有很好的表达转换为数字的本意。

将字符串转换为数字的最佳方法?

负十六进制数字符串转换为数字时。应首先将任何其转换为 String(例如通过 + "" ),然后使用一元运算符或带基数的 parseInt 解析为数字。但是结果不是 NaN 的数值时,使用 parseFloat 更为合适。

html将字符串转为数值,JavaScript字符串转数字的5种方法及其陷阱相关推荐

  1. JavaScript字符串转数字的5种方法及其陷阱

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 :JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法! 原文: Converting St ...

  2. 将C语言的字符串转为OC的字符串

    <pre name="code" class="objc">3.C语言和OC结合题目 从控制台输入用户名和密码, 然后 判断输入的用户名是否是@&q ...

  3. 将UTC日期字符串转为本地时间字符串,如@yyyy-MM-dd'T'HH:mm:ssZ转换为本地时间

    由于苹果商店上线应用24小时内会不稳定,更新提醒可能会陷入死循环,更新提醒需要24小时后弹出,需要把苹果返回的上线时间转换为本地时间故写了下边的方法: //将UTC日期字符串转为本地时间字符串 //输 ...

  4. html的时间格式转换为本地时间,将UTC日期字符串转为本地时间字符串,如@yyyy-MM-dd'T'HH:mm:ssZ转换为本地时间...

    由于苹果商店上线应用24小时内会不稳定,更新提醒可能会陷入死循环,更新提醒需要24小时后弹出,需要把苹果返回的上线时间转换为本地时间故写了下边的方法: //将UTC日期字符串转为本地时间字符串 //输 ...

  5. python中字符串转成数字的几种方法

    在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,本文介绍python中字符串转成数字的三种方法:1.使用join的方法:2.使用int函数将16进 ...

  6. php 正则获取数字,php结合正则获取字符串中数字的几种方法

    本篇文章主要介绍php结合正则获取字符串中数字的几种方法,感兴趣的朋友参考下,希望对大家有所帮助. php结合正则获取字符串中数字<?php $patterns = "/\d+/&qu ...

  7. Shell中判断字符串是否为数字的6种方法

    Shell中判断字符串是否为数字的6种方法 #!/bin/bash # 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]* ...

  8. 浅谈C语言将字符串中的空格替换成%20的几种方法(附图超级详细解答)

    文章目录 题目分析 暴力位移法 巧用数组法 高效倒放法 题目分析 将字符串中的空格替换为%20.样例: "abc defgx yz" 转换成 "abc%20defgx%2 ...

  9. java浮点数化为整数_[Java教程]javascript浮点数转换成整数三种方法

    [Java教程]javascript浮点数转换成整数三种方法 0 2014-06-24 04:00:27 将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如 ...

最新文章

  1. 基于SSM实现社区医院管理系统
  2. 企业网络运行中,您是否遇到如下问题?——Vecloud
  3. SpringBoot demo初始
  4. 如何在AWS搭建服务器控制服务器
  5. ngx_rtmp_shared模块对ngx_chain_t的操作总结
  6. Golang连接池的几种实现案例
  7. 安装hdfs集群的具体步骤
  8. PHP环境 PDOException PDOException: could not find driver
  9. php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...
  10. 【Keil MDK】(一)Keil MDK 5.28 的下载、安装、破解
  11. HTML网页设计作业
  12. mx250显卡天梯图_mx250显卡天梯图_2020最新笔记本显卡天梯图,看看你的显卡排在哪里吧...
  13. SnagIt 9-12 注册码
  14. 为什么kafka客户端需要配置 /etc/hosts文件
  15. 城市微光,大抵如此--爱摸鱼的美工(15)
  16. 数字孪生in卫星:数字化助力强国芯
  17. 如何让网页界面变暗色
  18. 程序人生|五年java 含泪总结,建议小白看
  19. 表单提交成功后重置表单
  20. C# Interlocked类的事例

热门文章

  1. TCP Delayed ACK 辩证考
  2. wordpress迁移
  3. python 学习第七讲作业 2020-12-29
  4. 一次完整的HTTP事务是怎样一个过程?
  5. 如何编写一个完整的Linux命令
  6. 导出手机内安装的应用
  7. vmware合并LUN
  8. 考研英语写作素材:常用特色词汇
  9. apex之 程序构建器
  10. C++ COM编程之QueryInterface函数(一)