最近在掘金上看到一位大三的学生总结的一个js面试题:将字符串转换成数字。看了他的文章真让我想起去年的自己。

parseInt(num);

还是写代码比较快乐:如下

arseInt(12)
12
parseInt(12.09)
12
parseInt(-0.98)
-0
parseInt('12')
12
parseInt('12df')
12
parseInt('adh')
NaN
parseInt('1+2')
1
parseInt('4*6')
4
parseInt('3/2')
3
parseInt('2-1')
2
parseInt('12.png')
12

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

parseInt(num, 10);

我们大多数情况下都忽略了parseInt的第二个参数:radix,它的原型是这样的parseInt(string, radix)

parseInt("10");            //返回 10
parseInt("19",10);        //返回 19 (10+9)
parseInt("11",2);     //返回 3 (2+1)
parseInt("17",8);     //返回 15 (8+7)
parseInt("1f",16);        //返回 31 (16+15)
parseInt("010");      //未定:返回 10 或 8
["1","2","3"].map(parseInt)   //[1,NaN,NaN]
parseInt("123", 37)  //NaN 超过范围
parseInt("123", 0)  //123 当做10进制处理
parseInt("123", undefined)  //123 当做10进制处理
parseInt("123", null)  //123 当做10进制处理

我还写了一些没有规律的:

parseInt(12,2)
1
parseInt(10,2)
2
parseInt(13,3)
1
parseInt(188,4)
1
parseInt(7,8)
7
parseInt('1333',9)
1002
parseInt('11',2)
3
parseInt(11,2)
3
parseInt(010)
8
parseInt('010')
10
parseInt(78,8)
7
parseInt(1233,8)
667
parseInt('123',8)
83
parseInt("123", 16) === parseInt("0x123")true

parseFloat(num)

如果你不解析16进制数,这是一个非常好的选择

parseInt(-0xFF) // returns -255
parseInt("-0xFF") // returns -255
parseFloat(-0xFF) // returns -255
parseFloat("-0xFF") // returns 0
parseFloat(12.333333)
12.333333
parseFloat(12.89ssa)
VM1397:1 Uncaught SyntaxError: Invalid or unexpected token
parseFloat('12gggg')
12
parseFloat('undefined')
NaN
parseFloat('sddd')
NaN
parseFloat(12.png)
VM1508:1 Uncaught SyntaxError: Invalid or unexpected token
parseFloat('12.png')
12

Number(num)

Number(012)
10
Number(12)
12
Number(-0.12)
-0.12
Number('122')
122
Number('0123')
123
Number('12png')
NaN
Number('12as')
NaN
Number(023)
19
Number(026)
22

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

Number也是JsPerf中最慢的之一。

Number:几乎不用它。

~~num

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

~~1.23 // returns 1
~~"1.23" // returns 1
~~"23" // returns 23
~~"Hello world" // returns 0
~~3.4
3
~~-0.3
0
~~0.3
0
~~2.3444
2
~~-2.3
-2

一元运算符

num / 1 // 除一个数
num * 1 // 乘一个数
num - 0 // 减去0
+num // 一元运算符 “+”

"1.23" * 1 // returns 1.23
"0xFF" - 0 // returns 255
"0xFF.jpg" / 1 // returns NaN
+"023" // returns 23

总结:
负十六进制数字符串转换为数字时。最好使用带基数的 parseInt 解析为数字。明确知到进制数的也是通过带基数的 parseInt 解析为数字。其他的建议使用一元运算符+来将字符串转数字,也是最快的。

js怎么把字符串转数字相关推荐

  1. JS数组、字符串、数字的相互转化

    文章目录 JS数组.字符串.数字的相互转化 数组转字符串 字符串转数组 字符串转数字 数字转字符串 数组转数字数组 数字转数组 JS数组.字符串.数字的相互转化 数组转字符串 方法名 说明 返回值 t ...

  2. 前端百题斩【006】——js中三类字符串转数字的方式

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第6斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. js中字符串 ...

  3. JS操作符转化字符串为数字

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) from:http://cnodejs.org/topic/53400c0c018dc21c220082b3 ...

  4. JS 正则提取字符串中数字

    方法一 string.replace(/[^0-9]/ig, '') 这种方法是直接得到字符串数字 var string = 'func56t9i10on'var number = string.re ...

  5. js字符串与数字相加减

    var a='123'; var b=a+1; console.log(b); 输出为1231,type是string var a='123'; var b=a-1; console.log(b); ...

  6. js 判断是不是数字||判断字符串是不是数字(正则表达式)

    js使用正则表达式判断对象是不是数字,或者字符串是不是数字,或者是不是数字类型 1 //判断是不是一个数字 或者 一个字符串里全是数字 2 isNumber (value) { 3 if (value ...

  7. js 缺少标识符、字符串或数字

    2019独角兽企业重金招聘Python工程师标准>>> 在IE8兼容模式下出现 js   缺少标识符.字符串或数字 是由于js代码中有些语句的结尾多了一个 , 删去即可 转载于:ht ...

  8. Js将字符串转数字的方式

    Js将字符串转数字的方式 Js字符串转换数字方方式主要有三类:转换函数.强制类型转换.弱类型隐式类型转换,利用这三类转换的方式可以有5种转换的方法. parseInt() parseInt()和Num ...

  9. JS字符串过滤数字_过滤大写数字

    JS字符串过滤数字_过滤大写数字 代码案例: //数字替换 if(data.summary){data.summary=data.summary.replace(/[\d|壹|贰|叁|肆|伍|陆|柒| ...

最新文章

  1. 酷炫的深度学习网络图怎么绘制出来的?
  2. HCNE题库附件、可下载
  3. JDK1.6历史版本的下载
  4. uni-app开发微信小程序之获取当前地址
  5. Javascript 调试技巧
  6. 微型计算机中 奔三 指,计算机基础知识180题.docx
  7. ubuntu系统颜色更改
  8. 3.3 垃圾回收算法
  9. MATLAB自适应平滑滤波
  10. 个人朋友圈时代过去了,企业微信朋友圈开辟营销新思路
  11. Flask的Jinjia2模板
  12. 华为eNSP模拟器vlan 隔离技术的实现
  13. 79.(cesium之家)cesium动态纹理-颜色
  14. ckfinder php 配置,PHP中Ckeditor Ckfinder配置图片上传功能
  15. Hipster the Kid - “Thinking Of” WA47电子管麦克风录制说唱人声
  16. 企鹅杏仁集团完成2.5亿美元融资,投后估值超过10亿美元...
  17. 35BYJ46步进电机
  18. 兼容iOS 10 _升级xcode8_适配(四)
  19. 苹果6手机服务器停止响应,iphone6被停用怎么办?苹果6被停用解决方法汇总
  20. 李宏毅2022机器学习HW5解析

热门文章

  1. 51单片机入门之五:数码管显示(动态),单片机驱动数码
  2. c语言:求正方体的表面积和体积
  3. web表格CSS 属性
  4. 通达信7.12服务器文件,通达信金融终端_尘缘整合_V7.12
  5. Micropython——HC-SR04超声波测距模块
  6. 网页版电子表格控件tmlxSpreadsheet免费下载地址
  7. c语言入门——三子棋(N子棋)
  8. 异构信息网络 Heterogeneous information network (HIN)
  9. python保存3通道图片为8位深度图
  10. 通过继承实现圆柱体面积体积的计算