js有5种基本数据类型: undefined, Null, Boolean,Number, String(, Symbol).还有一种复杂类型数据: Object.

Number()

Number类型采用IEEE 754 64位格式存储,所以jS中的整数和浮点数都是以浮点数表示。浮点型数值占据的内存空间是整数型的两倍,所以JS会不失时机的把浮点数转换为整数。

位操作符不直接操作64位的值,而是先将64位的转换位32位整数,再执行操作,然后将结果转换回64位。
有符号的整数,32位中前31位表示整数值,第32位表示数值符号:0表示正数,1表示负数。

  • boolean值,true和false被转换为1和0;
  • 数值,不变(会识别十进制/八进制-0开头/十六进制-0x开头)
  • null,返回0
  • undefined,返回NaN
  • 字符串:
  1. 如果字符串中只包含数字(包括正负号),转换为十进制数值,数值前面有0的会去掉0
  2. 浮点数,转换为相应的浮点数,但是后面小数位只含0的会去掉0
  3. 十六进制格式‘0x’,转换为有效的十进制值(Number()会自动把字符串形式的十进制数和十六进制数都转换为十进制,但是不识别八进制,会被当做十进制数处理。)
  4. 字符串为空或空白符,转换为0
  5. 包含除上述之外的字符,转换为NaN
  • 对象
  1. 先调用对象的valueOf()方法,如果返回原始值类型,则对返回值调用Number()函数,再走一遍上面的流程;若返回的不是原始类型值,则调用toString()方法
  2. 如果toString()方法返回原始类型值,就对返回值调用Number()函数;如果返回还是对象就返回NaN。
Number(11) // 11
Number(011) //  9
Number(0x11) //  17
Number(undefined) // NaN
Number(null) // 0
Number(true) // 1
Number(false) // 0Number(‘1.0’)   //1
Number(‘1.00‘)   //1
Number('011')  //11
Number('0x15')  //21

parseInt()

字符串: 将字符串转换为整数,转换时忽略前导空格。第一个字符不是数字字符或负号,返回NaN.(空字符串也是).
若是第一个是数字字符,继续向后解析到非数字字符。
由于es3和es5对于解析八进制字符串有分歧,所以parseInt()第二个参数是转换时的基数(2到36之间),即多少进制。

parseInt('') // NaN
parseInt('  10px') // 10
parseInt('  -10px') // -10
parseInt('10.5') // 10//可以识别不同进制的数字,但只能解析十进制字符串,八进制字符串会被当做十进制处理。
parseInt('0x11') // 17
parseInt('070') //70
parseInt(070) //56 八进制parseInt('0xAF', 16)
=>
parseInt('AF', 16) //175,指定了进制,则可以省掉前缀//对于会自动转换成科学计数法的数值,会把科学计数法当做字符串处理。
parseInt(1000000000000000000000.5) // 1
// 等同于
parseInt('1e+21') // 1
parseInt(0.0000008) // 8
// 等价于
parseInt('8e-7')) // 8

注:上述倒数两个例子中转换很奇怪,是因为自动转化为科学计数法的缘故。

parseFloat()

parseFloat()方法用于把字符串转换成浮点数,解析时同样会忽略前导空格,从第一个数字开始解析直到遇到无效的浮点值结束。第一个字符不是数字字符或负号,返回NaN.(空字符串也是).

parseFloat('20.30.3') // 20.3
parseFloat('-20.00元')  // -20// 科学计数法表示的数字会自动进行转换,然后再求浮点值
parseFloat('314e-2') // 3.14
parseFloat('0.0314e+2') // 3.14
parseFloat(1000000000000000000000.5) // 1e+21//可以识别不同进制的数字,但只能解析十进制字符串,八进制字符串会被当做十进制处理。
parseFloat(11) // 11
parseFloat(011) // 9
parseFloat(0x11) // 17parseFloat('11') // 11
parseFloat('011') // 11
parseFloat('0x11') // 0

注:科学计数法:
科学计数法e或E表示,e后面跟一个整数表示指数。
数值小于1且小数点后有大于等于6个0 或 数值整数位大于等于22位时,js会自动将数值转换为科学计数法。
https://www.html.cn/archives/9318

JS Number类型的数值转换相关推荐

  1. JS原始类型:数值的运用技巧

    保留特定位数的小数 有一些题目常常要求格式化数值,:比如保存几位小数等等. 1.使用Number.prototype.toFixed() 原生方法.该方法的参数为要保存的小数位数,有效范围为0到20, ...

  2. oracle精度制的数据类型,ORACLE 中NUMBER 类型 低精度转换成高精度

    Node.js的函数返回值 先看一段代码: function select(sqlscript){     var result = "";     sql.connect(con ...

  3. python隐式类型转换_JS 类型隐式转换

    1.js数据类型 js中有7种数据类型,可以分为两类:原始类型.对象类型: 基础类型(原始值): Undefined. Null. String. Number. Boolean. Symbol (e ...

  4. js 时间与时间戳的转换

    一:时间转时间戳:javascript获得时间戳的方法有四种,都是通过实例化时间对象 new Date() 来进一步获取当前的时间戳 1.var timestamp1 = Date.parse(new ...

  5. js 金额数字转换成普通数值(Number类型)

    CurrencyFomatNumber(number, n) {if (number != null && number != '' && number != unde ...

  6. 深入了解JS的Number类型

    深入了解 Number 类型 Number 类型作为 JS 的基本数据类型之一,被应用在程序中的各种场景,其重要性就如数字对于我们日常生活. 下面就让我们来一起深入了解下,为以后的"策马奔腾 ...

  7. JS不同类型之间运算与转换

    基本数据类型隐式转换: 隐式转换逻辑 如:"32"+32="3232"    "+"可以把数字转换为字符串    "+" ...

  8. Vue.JS项目输入框中使用v-model导致number类型值自动转换成string问题的解决方案

    老文章了,目前用el-input v-model.number就能解决 很简单的操作,不知道当初在做什么,下文请直接忽略- Vue.JS项目中v-model导致输入框中number类型值自动转换成st ...

  9. javascript高级程序设计学习之数值转换 |Number(),parseInt(),parseFloat()

    2019独角兽企业重金招聘Python工程师标准>>> 将非数值转换成数值的函数有三个:Number(),parseInt(),parseFloat(); 小记tip:Number( ...

最新文章

  1. 鼠标平滑滤波_38年依然保持旺盛创作力,罗技G Hero16K撑起无线游戏鼠标时代
  2. jointGrid,边际的颜色和hue保持一致,添加title
  3. java连接stk外部接口_SLWSTK无线开发工具上的外扩串口如何使用(虚拟串口/VCOM)...
  4. MySQL服务MySQL+MHA高可用服务集群搭建
  5. php 图像编程库,PHP图像处理开发库
  6. CSS 文本溢出时显示省略标记
  7. OpenSuse13.2 安装GMT 5.4.2
  8. 若依前端table中如何显示图片?
  9. [6]2020-WACV-Adversarial Sampling for Active Learning论文笔记
  10. android怎么截取接口返回html代码中的内容_某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践...
  11. 航空三字代码表_目前最全的航空城市三字代码表
  12. Exchange2010删除指定账户指定主题邮件
  13. 斐讯路由器K2弹广告-刷机过程
  14. 高阶面试官应掌握哪些面试技巧
  15. 《管理的常识》3-“什么是组织结构”读后感及读书笔记
  16. 第2部分 字符串算法(提高篇)--第2章 KMP算法-1468:OKR-Periods of Words
  17. 查看服务器型号和cpu参数等信息
  18. Python 实现语音文本互转
  19. android studio 看不到 manifest,Android Studio: Android Manifest doesn't exist
  20. EditPlus设置Java代码格式化

热门文章

  1. 水瓶座按耐不住一成不变
  2. memoQ | Excel内容做成翻译记忆库
  3. 电影数字服务器里播放文件字母意思,[转载]数字电影命名规则
  4. java毕业设计交通事故档案管理系统(附源码、数据库)
  5. Zookeeper(动物园管理员)为什么需要他?分布式协调系统
  6. opencv 利用摄像头来判断石头剪刀布的小游戏
  7. php中censor()的用法,两份PHP程序代码对比,大家认为其编程水平都如何样?censor.class.php...
  8. AHB、APB、AXI三种协议对比分析(AMBA总线)
  9. 小程序-心理学辞典应用开发的心得
  10. 关于域名解析的问题--对话