在JS中,支持字符串类型和整数等数值类型互转;以下我们研究一下数据类型转换。

目录

  • 1 parseInt:字符串转为整数
    • 1.1 基本用法
    • 1.2 进制转换
  • 2. parseFloat:字符串转为浮点数
  • 3. Number:数值转换
  • 4. 总结

1 parseInt:字符串转为整数

1.1 基本用法

最简单的是将字符串直接转为十进制,此时parseInt()只需要传入一个参数即可。如下:

parseInt('123') // 123

当此时第一个字符为空格或者第一个为数字,其他的字符不能识别时,会自动去除空格以及不能被识别的字符,如下:

parseInt('   20') // 20
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15

如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN,如下:

parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1

若字符串为带小数点的浮点数,或者直接为浮点数,则parseInt()只取整数部分进行转化,如下:

parseInt('1.99') // 1
parseInt(1.99)  // 1

如果字符串以0x或0X开头,parseInt会将其按照十六进制数解析。如果字符串以0开头,将其按照10进制解析。如下:

parseInt('0x10') // 16
parseInt('011') // 11

1.2 进制转换

  parseInt 方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt 的第二个参数为10,即默认是十进制转十进制。如下:

parseInt('1000') // 1000
// 等同于
parseInt('1000', 10) // 1000//转换指定进制数。
parseInt('1000', 2) // 8
parseInt('1000', 6) // 216
parseInt('1000', 8) // 512

如果字符串包含对于指定进制无意义的字符,则从最高位开始,只返回可以转换的数值。如果最高位无法转换,则直接返回NaN。如下:

parseInt('1546', 2) // 1
parseInt('546', 2) // NaN

以上“5”对于二进制来说是无意义字符,故而第一个返回 ‘1’,第二个返回’NaN’。
还有一个有趣的现象,如果parseInt 的第一个参数不是字符串,会被先转为字符串。如下:

parseInt(0x11, 36) // 43
parseInt(0x11, 2) // 1// 等同于
parseInt(String(0x11), 36)
parseInt(String(0x11), 2)// 等同于
parseInt('17', 36)
parseInt('17', 2)

此时若第一个字符为0后面跟着有效字符,那么会被当做八进制数转化,要注意这个点。

2. parseFloat:字符串转为浮点数

parseFloat方法用于将一个字符串转为浮点数。

parseFloat('3.14') // 3.14

如果字符串符合科学计数法,则会进行相应的转换。如下:

parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14

与parseInt类似,如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分,如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。如下:

parseFloat('3.14more non-digit characters') // 3.14
parseFloat('FF2') // NaN
parseFloat('') // NaN

3. Number:数值转换

Number() 方法可以可识别的字符串直接转化为数值,当字符串内是整数则被转化为整数,是浮点数则被转化为浮点数,若出现不可识别的字符,则直接被转为NaN*。如下:

Number("0x55") // 85
Number("55") // 55
Number("55.5") // 55.5
Number("55a") // NaN

Number() 方法会将空字符串转为0,而parseFloat会将空字符串转为NaN。
这些特点使得Number函数的转换结果不同于parseFloat。如下:

parseFloat(true)  // NaN
Number(true) // 1parseFloat(null) // NaN
Number(null) // 0parseFloat('') // NaN
Number('') // 0

4. 总结

  从以上我们可以看出,parseIntparseFloat 以及Number的返回值只有两种可能,要么是数值,要么是 NaN,而对于不能识别的情况会自动截取或者返回NaN,此三种方法一般可以看情况选用。

JS字符串转为数值方法详解相关推荐

  1. python中时间戳、字符串之间转换详解

    [转载]python中时间戳.字符串之间转换详解 (2013-04-30 17:36:07) 转载▼ 标签: 转载 原文地址:python中时间戳.字符串之间转换详解作者:doris0920 1)秒数 ...

  2. python中字符串切片取奇数_Python中的字符串切片(截取字符串)的详解

    Python中的字符串切片(截取字符串)的详解 字符串索引示意图 字符串切片也就是截取字符串,取子串 Python中字符串切片方法 字符串[开始索引:结束索引:步长] 切取字符串为开始索引到结束索引- ...

  3. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  4. python中字符串乘法_python leetcode 字符串相乘实例详解

    给定两个以字符串形式表示的非负整数 num1 和  num2 ,返回  num1 和  num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", ...

  5. JVM——字符串常量池详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在Java开发中不管是前后端交互的JSON串,还是数据库中的数据存储,我们常常需要使用到String类型的字符串.作为最常用也是 ...

  6. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  7. nodejs 本地php服务器,node.js创建本地服务器详解

    本文主要和大家分享node.js创建本地服务器详解,简易上手node.js后,我们就可以在自己电脑上创建本地服务器了.希望能帮助到大家. 一.先上代码.//请求Node.js自带的http模块. va ...

  8. js打印三角形超详解

    js打印三角形超详解 j控制星星的总行数,i控制每行星星的打印个数 打印图形如下: (1) (2) //str=""用来存储星星// 理解步骤1:在一行输出6个星星如何操作,在循环 ...

  9. JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...

  10. php分解字符串_php字符串分割的详解

    php字符串分割的详解 比较两个字符串是否相等,最常见的方法就是使用"==="来判断,至于它和"=="的.区别,简单来说就是前者强调"Identica ...

最新文章

  1. SpringBoot简单使用
  2. 电大最全计算机应用技术基础答案,电大最新最全计算机应用技术基础答案100%通过率...
  3. 追求极简:Docker镜像构建演化史
  4. JVM内存溢出分析-实战JVM(二)
  5. crawler4j mysql_Nutch、heritrix、crawler4j优缺点
  6. UOJ#33-[UR #2]树上GCD【长链剖分,根号分治】
  7. 第一季6:海思方案中uboot、kernel和rootfs的烧写方法
  8. 屠杀机器人和无处不在的监控:AI是我们最大的生存威胁?
  9. 七牛上传图片html,MWEB+七牛 上传图片
  10. 60-100-032-使用-MySQL大小写敏感的解决方法
  11. js模仿块级作用域(js没有块级作用域私有作用域)
  12. OpenSplice DDS 分布式DDS网络架构(DDS 6.9.0+VS 2013+Qt 5.8.0 )
  13. 缓存-问题:缓存穿透 缓存雪崩 缓存击穿
  14. LINUX SHELL脚本多行注释
  15. MNIST数据集下载与读取
  16. (附源码)计算机毕业设计ssm-高校科研信息管理系统
  17. 计算机组装训练知识总结,组装知识总结
  18. 小路工作室GHOST XP 2007典藏版(完美XP)
  19. uniapp中scroll-view的下拉刷新
  20. R语言 非参数检验:Mann-Whitney检验和Wilcoxon检验

热门文章

  1. SC;FC;LC;光纤接口介绍
  2. 第二章 IOC的配置使用 --《跟我学Spring》笔记 张开涛
  3. sql删除表中各类重复数据
  4. 飞行堡垒FX80GM热键无反应与触摸板无法使用
  5. 【Matlab系列】Matlab语言基础知识汇总
  6. 互联网面试八股文之Java基础
  7. Python学习日记(初级篇02面向对象之基础)——黑马程序员视频学习笔记
  8. Web 项目中,MySQL 最新驱动下载、及配置
  9. OpenCore安装教程
  10. Windows XP中的通用即插即用