资讯专栏INFORMATION COLUMN

javascript数值转换

qianfeng / 1688人阅读

摘要:函数在转换字符串时,更多的是看其是否符合数值模式。例如,会被转换为,因为会被完全忽略。类似地,会被转换为,因为小数点并不是有效的数字字符。指定基数会影响到转换的输出结果。举例来说,将会被转换为。但十六进制格式的字符串则始终会被转换成。

以下三个函数将非数值转换为数值:Number() 、parseInt()和 parseFloat()
Number()的转换规则

Boolean值 true会被转换为1 false会被转换为0

var correct = true
Number(correct)
1
var error = false
Number(error)
0

数字值 传入什么返回什么

var sales = 10
Number(sales)
10

null 值,返回 0

var arg = null
Number(arg)
0

undefined,返回 NaN

var vara = undefined
Number(vara)
NaN

字符串,遵循下列规则:

如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"
会变成 1,"123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了)

var str = "1"
Number(str)
1
var str1 = "011"
Number(str1)
11
var str2 = "+1"
Number(str2)
1
var str3 = "-001"
Number(str3)
-1
var str4 = "-121"
Number(str4)
-121

如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽
略前导零)

var str = "1.1"
Number(str)
1.1
var str1 = "+1.1"
Number(str1)
1.1
var str2 = "-01.1"
Number(str2)
-1.1

如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整
数值

如果字符串是空的(不包含任何字符),则将其转换为 0

var str = ""
Number(str)
0

如果字符串中包含除上述格式之外的字符,则将其转换为 NaN

var str = "adfsfdsa"
Number(str)
NaN

如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值

parseInt()转换规则
由于 Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是
parseInt()函数。parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字
符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符,parseInt()
就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaN(Number()对空字符返回 0)。如
果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了
一个非数字字符。例如,"1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地,"22.5"
会被转换为 22,因为小数点并不是有效的数字字符。
指定基数会影响到转换的输出结果。例如:
var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析)
**多数情况下,我们要解析的都是十进制数值,因此始终将 10 作为第二个参数是
非常必要的。**
parseFloat()转换规则
与 parseInt()函数类似,parseFloat()也是从第一个字符(位置 0)开始解析每个字符。而且
也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第
一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,
"22.34.5"将会被转换为 22.34。
除了第一个小数点有效之外,parseFloat()与 parseInt()的第二个区别在于它始终都会忽略前导
的零。parseFloat()可以识别前面讨论过的所有浮点数值格式,也包括十进制整数格式。但十六进制格
式的字符串则始终会被转换成 0。由于 parseFloat()只解析十进制值,因此它没有用第二个参数指定基
数的用法。最后还要注意一点:如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后
都是零),parseFloat()会返回整数。
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0 
var num3 = parseFloat("22.5"); //22.5 
var num4 = parseFloat("22.34.5"); //22.34 
var num5 = parseFloat("0908.5"); //908.5 
var num6 = parseFloat("3.125e7"); //31250000 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97727.html

相关文章

  • 数据类型 - Javascript语法基础 - Javascript核心

    摘要:在编程语言中,能够表示并操作的值的类型称做数据类型。中的原始类型包括数字,字符串和布尔值。日期与时间语言核心包括构造函数,用来创建表示日期和时间的对象。其规则为如果是布尔值,和分别被转换为和如果是数字值,返回本身。 源代码: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/Javas...

    sevi_stuo 评论0 收藏0
  • JavaScript--变量与基本数据类型

    摘要:中变量可能包含两种不同的数据类型的值基本类型和引用类型。本文主要介绍基本数据类型及其特点。操作符在介绍基本类型值之前,先说下操作符,操作符会返回数据类型的字符串表示。所有未初始化的变量均会保存该值。 前言JavaScript中的变量为松散类型,所谓松散类型就是指当一个变量被申明出来就可以保存任意类型的值,就是不像SQL一样申明某个键值为int就只能保存整型数值,申明varchar只能保...

    XanaHopper 评论0 收藏0
  • JavaScript基本语法(一)

    摘要:目录语句变量小结基本语法一是核心知识点的基本语法的第一部分,主要介绍了语句表达式变量和数据类型不包括函数类型的基本知识点,函数类型将在下一章函数二中详细探讨语句程序的执行是由一条条语句组成的每一条语句是为完成特定任务而执行的操作语句当中可以 目录 1. 语句 2. 变量 3. 小结 JavaScript基本语法(一)是JavaScript核心知识点(ECMAScript)的基本语法的...

    shiina 评论0 收藏0
  • JavaScript 闯关记》之表达式和运算符

    摘要:函数定义表达式。对象创建表达式。也就是说,空字符串将被当作,布尔值将被当作。如果有一个操作数是对象数值或布尔值,则调用它们的方法取得相应的字符串值,然后再应用前面关于字符串的规则。对于和,则分别调用函数并取得字符串和。 表达式 表达式是由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。JavaScript 表达式主要有以下几种形式: ...

    Render 评论0 收藏0
  • 我的javascript学习笔记之数据类型

    摘要:中的对象其实就是一组数据和功能的集合。对象可以通过执行操作符后跟要创建的对象类型的名称来创建。而创建类型的实例并为其添加属性和或方法,就可以创建自定义对象,如下所示 数据类型 ECMAscript有五种简单数据类型:Undefined,Null,Boolean,String,Number,还有一种复杂数据类型Object,Object本质上是由一组无序的名值组成的. 1.Undefin...

    hss01248 评论0 收藏0
  • JavaScript 闯关记》之变量和数据类型

    摘要:当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量,值的类型称作数据类型。运算符鉴于是松散类型的,因此需要有一种手段来检测给定变量的数据类型,就是负责提供这方面信息的运算符。 当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量,值的类型称作数据类型。 变量 JavaScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个...

    HackerShell 评论0 收藏0

发表评论

0条评论

qianfeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<