Javascript中字符串转数字
我们知道最简洁的数字转字符串方法是:
var num = 123; var string = num + "";也就是在数字后面加上一个空字符。那么最简洁字符串转数字方法呢?
字符串只能进行加法(拼接)
字符串进行加法(拼接)是很常见的,但是字符串进行减法、乘法、除法呢?
这似乎很难定义,实际上字符串没有减法、乘法、除法操作。
但Javascript是动态语言,如果你拿两个字符串进行这三种操作的时候,他会尝试将其转成数字再进行相应的操作。例如:
alert("45" - "32"); //13
alert("5" * "6"); //30
alert("12" / "3"); //4
但这种转换操作和parseInt和parseFloat不太像,而和Number比较像,比如:
alert("123a" - "2bc"); //NaN alert(parseInt("123a") - parseInt("2bc")); //121 alert(Number("123a") - Number("2bc")); //NaN
也就是说,这种转换和Number一样,会将非纯数字型字符串转成NaN,表示其是非数字。
而parseInt、parseFloat则会取出字符串中取出前面的能表示成数字的部分,而忽略掉后面不能表示成数字的部分。
最简洁的字符串转数字方法
借助字符串在进行其不能进行的运算时会先尝试转成数字这个特性。我们可以对字符串前加上正符号来将字符串转成数字。如:
var num = +"45"; alert(typeof num); //number
jQuery中有一个这个方法的应用,比如我们得到一个字符串怎么判断他能不能当成数字看待呢?jQuery的方法:
var string = "321"; //这个是得到的字符串,随意是什么 alert(+string + "" === string); //true表示可以当成数字,否则不行
我们注意到,如果string = "000",那么返回是false。
但实际上jQuery是为了获取HTML5里的data-Attribute的属性,由于data-Attribute属性返回的必然是字符串。如果字符串是"000",那么也不应当将其看做是数字0。
thanks shuaisam
如果要得到字符串是不是由纯数字组成可以这么判断:
var string = "000"; alert(+string + "" !== "NaN");
其实利用这个特性还有其他方法,比如:
var num = "45" - 0; alert(typeof num); //number
var num = "45" * 1; alert(typeof num); //number
var num = "45" / 1; alert(typeof num); //number
进制问题
0x开头的是16进制,所以Number和parseInt都会对16进制进行相应的转换,字符串的自动转换也是这般:
alert(parseInt("0x10")); //16 alert(Number("0x10")); //16 alert(+"0x10"); //16
不过parseFloat有些闹别扭,他不认识16进制,结果变成这样:
alert(parseFloat("0x10")); //0
更悲剧的是0开头的,我们知道0开头可以用来表示8进制,在Number和字符串自动转换中,0开头会当成十进制来获取,如:
alert(Number("010")); //10 alert(+"010"); //10
而parseInt中却很悲催,ECMAScript中并未对此进行强制规定所以出现了下面的情况:
alert(parseInt("010")); //8 in Firefox & IE
alert(parseInt("010")); //10 in Chrome
╮(╯_╰)╭ 难怪很少见到Javascript中用到8进制,如果要确保8进制只能使用parseInt的第二个参数了:
alert(parseInt("010", 8)); //8
parseFloat继续不认识8进制,所以:
alert(parseFloat("010")); //10
Javascript中字符串转数字相关推荐
- 如何从JavaScript中的给定数字中形成最小的数字
by Prashant Yadav 通过Prashant Yadav 如何从JavaScript中的给定数字中形成最小的数字 (How to form the smallest possible nu ...
- JavaScript中字符串与Unicode编码的互相转换
JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际 ...
- JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例
JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例 "John Doe" -> String 'John Doe' -> String &quo ...
- 在javascript中将字符串转换为数字的6种方法
在javascript中,数字可以用两种不同的方式表示, 1.作为实际数字. 2. 作为字符串 . 很多时候,我们需要在javascript中将字符串转换为数字. 我们将看到6种不同的方法可以将字符串 ...
- JavaScript中字符串连接/拼接的四种方式
JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...
- php 参数与数字比较,PHP8中字符串与数字的比较更智能
PHP8中字符串与数字的比较更智能 PHP8.0发布[1]也有一段时间了,此次发布带来了很多实用且强大的功能,比如: Named arguments // php 7.x htmlspecialcha ...
- JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。
我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...
- c语言字母转换数字代码,实现c语言中字符串和数字的相互转换的代码
实现c语言中字符串和数字的相互转换的代码 引导语:代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符.符号或信号码元以离散形式表示信息的明确的'规则体系.以下是百分网小编分享给大家的实现 ...
- python字符串拼接数字_解决Python中字符串和数字拼接报错的方法
解决Python中字符串和数字拼接报错的方法 前言 众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错. 如以下的代码: # co ...
最新文章
- 【转】将 Linux 应用程序移植到 64 位系统上
- zigbee抗干扰matlab仿真,基于Zigbee的扩频通信MATLAB仿真.doc
- Java 接口小总结;
- C#后台,执行前台js 脚本
- linux网络编程(二)TCP通讯状态
- 北京、深圳 | 百度视觉算法研发实习生 人脸活体方向
- 【廖雪峰官方网站/Java教程】注解
- 一百多道.NET面试题!
- java从入门到精髓 - IO输入输出
- 最短路 Dijkstra 算法详解与模板
- django基础入门(3)django中模板
- [转][darkbaby]任天堂传——失落的泰坦王朝(上)
- 中望3D 2021 “坐标标注”
- 照度稳定可调LED台灯
- 使用SketchUp制作球体的方法(图文教程)
- linux下cat命令,关于cat >file 、cat <file <<EOF、cat <<-EOF的区别
- 学python能赚钱吗-利用python能怎么挣钱
- 『网络安全』蜜罐到蜜网入门指南(一)蜜罐初识
- 我的世界java骷髅马_我的世界中国版骷髅马怎么获得 骷髅马召唤驯服指令
- compare_exchange_weak
热门文章
- List、Vector、ArraryList、LinkedList
- php提示行号,在php中使用trigger_错误时如何获得正确的行号?
- java helloworld代码_java学习应用篇|逃不掉的HelloWorld
- Windows版本Oracle审计日志,【情报】Oracle ORA-28056: 未能将审计记录写入 Windows 事件日志...
- Java基础:char类型字节占用数
- java core日志在哪里_java-如何在未启用日志记录功能的情况下在...
- 已经yum安装的基础上,升级编译安装git
- 20个开源项目托管站点推荐
- 常见的跑马灯效果,无缝连接。mcake官网公告使用
- 微信公众号点击菜单即可打开并登录微站的实现方法