js数值转换的三种方法

js非数值转换为数值的三种写法分别为Number()、parseInt()、parseFloat()。

Number()是最复杂的。规则如下:

1.数值直接输出;

console.log(Number(‘11‘));//输出11;

2.Boolean值,true转换成1,false转换成0;

console.log(Number(true));//输出1;
console.log(Number(false));//输出0;

3.null转换成0,undefined转换成NaN

console.log(Number(null));//输出0;
console.log(Number(undefined));//输出NaN;

4.字符串转换又有很多规则:

(1)字符串只包含数字,会转换成十进制,忽略前面的0,例如

console.log(Number(‘011‘));//输出11;

(2)字符串包含有效的浮点格式,会转换成小数,同样忽略前面的0,例如

console.log(Number(‘000.11‘));//输出0.11;

(3)字符串包含有效的十六进制格式,会转换成大小相等的十进制格式数值输出

console.log(Number(‘0xa‘));//输出10;

(4)字符串为空,不包含任何字符,转换为0

console.log(Number(‘‘));//输出0;

(5)除以上字符串外的字符串,转换为NaN

console.log(Number(‘Hello!‘));//输出NaN;

Number()的转换规则确实有些复杂了。并且在某些情况下可能并不是我们想要的结果。通常我们用parseInt()来进行数值的转换。

parseInt()不会转换非数值模式的格式。它会忽略字符串前面的空格,直到找到一个非空格字符:

1.如果这个字符不是数字符号或者负号,则返回NaN

console.log(parseInt(‘   Hello!‘));//输出NaN;

空字符串返回NaN,这一点跟Number()不同。

console.log(parseInt(‘ ‘));//输出NaN;

如果是数字符号或者负号,会继续解析第二个,直到解析完所有或者遇到非数字符号字符

console.log(parseInt(‘123hehe‘));//输出123;

非字符后面的数字也会被忽略

console.log(parseInt(‘123hehe123‘));//输出123;

小数点是非数字符号字符,会导致解析中止。

console.log(parseInt(‘12.3‘));//输出12

如果第一个非空格字符是数字,parseInt()可以解析各种整数格式,包括八进制,十进制,十六进制

console.log(parseInt(‘070‘));//es3输出56(八进制),es5输出70(十进制);
console.log(parseInt(‘70‘));//70(十进制);
console.log(parseInt(‘0xa‘));//10(十六进制);

可见es3和es5在解析八进制存在差异,es5已经不具备解析八进制的能力。因此我们有必要使用parseInt()的第二个参数

console.log(parseInt(‘070‘,8));//输出56;
console.log(parseInt(‘070‘,10));//输出70;
console.log(parseInt(‘70‘,8));//输出56;
console.log(parseInt(‘70‘,10));//输出70;
console.log(parseInt(‘0xa‘,16));//输出10;

如果指定16作为第二个参数,前面的0x就可以省略了,如果没指定则不能省略,否则返回NaN

console.log(parseInt(‘a‘,16));//输出10;
console.log(parseInt(‘a‘));//输出NaN;

建议使用parseInt()任何时候都加上转换基数。

parseInt()不能转换浮点型数值,我们用parseFloat()来解决。

parseFloat()跟parseInt()差不多,同样会从第一个非空字符串开始解析,直到解析完毕,或者遇到非浮点型数值格式(区别一),但是它会忽略前面所有的0,他没有转换基数,只解析十进制的值(区别二)

console.log(parseFloat(‘ 123hehe‘));//输出123;
console.log(parseFloat(‘123hehe‘));//输出123;
console.log(parseFloat(‘01.2.3‘));//输出1.2;
console.log(parseFloat(‘0xa‘));//输出0

注意,如果字符串可以解析为整数,则小数点后面的0不会输出

console.log(parseFloat(‘1.000‘));//输出1;
时间: 2024-10-22 00:58:31

js数值转换的三种方法的相关文章

JS数组去重的三种方法

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title>数组去重</title>     </head>     <body>         <script type="text/javascript">             //注意有一个元素是空的

iOS开发之--为UITextField监听数值变化的三种方法

项目中有个验证码输入直接验证跳转页面,用的RAC来监听textfield的输入值,如下: @weakify(self); [self.codeView.textField.rac_textSignal subscribeNext:^(NSString *value) { @strongify(self); self.value = value; //也可以直接在这里写想要执行的操作 }]; //当self.value的值变化时调用Block,这是用KVO的机制,RAC封装了KVO [RACObs

js 数组去重的三种方法(unique)

方法一: Array.prototype.unique=function(){ var arr=[];//新建一个临时数组 for(var i=0;i<this.length;i++){//遍历当前数组 if(arr.indexOf(this[i])==-1){//当前数组的第i个值在新数组中找不到,则添加到新数组中去 arr.push(this[i]); } } return arr; }; 方法二: Array.prototype.unique=function(){ var arr=[];

字符串大小写转换(三种方法)

//直接通过转换比较:function num1($str){ $num = strlen($str); $res = ''; for($i=0;$i<$num;$i++){ if(strtolower($str[$i]) == $str[$i]){ $res .= strtoupper($str[$i]); }else{ $res .= strtolower($str[$i]); } } return $res;}echo num1($a);echo "<hr/>"

【JS】JS数组添加元素的三种方法

1.push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 1).语法: arrayObject.push(newelement1,newelement2,....,newelementX) 参数 描述 newelement1 必需.要添加到数组的第一个元素. newelement2 可选.要添加到数组的第二个元素. newelementX 可选.可添加多个元素. 2).返回值: 把指定的值添加到数组后的新长度. 3).说明: push() 方法可把它的参数顺序添加到 arrayO

javascript生成对象的三种方法

/** js生成对象的三种方法*/ // 1.通过new Object,然后添加属性 示例如下: var people1 = new Object(); people1.name = 'xiaohailong01'; people1.age = 31; alert("name:" + people1.name + ", age:" + people1.age); // 2.直接接收json数据生成 var people2 = { name : 'xiaohailon

应对加密js的三种方法

经常遇到网页在登录后会对用户输入的帐号和密码通过js进行加密,导致模拟登录这类网站时受到阻碍 这里小记一下当前解决该问题的三种方法 1.利用python实现js同等加密. 2.利用selenium模拟登录. 3.利用pyexecjs来执行js文件 测试站点:http://bbs.125.la/ 登录时通过浏览器F12发现该网站对密码进行了加密 进一步分析和查找,发现是名为md5.js?RFI文件进行了加密 尝试用第一种方法,但是发现此文件内容较多,通过python转换相应程序较为复杂,因此放弃

javascript浮点数转换成整数三种方法

将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt位运算符Math.floor Math.ceil Description 一.parseInt 1. 实例 parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")/

js oop中的三种继承方法

JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.(继承的两方,发生在两个类之间)> 一.通过object实现继承 1:定义父类 function Parent(){} 2:定义子类 funtion Son(){} 3:通过原型给Object对象添加一个扩展方法. Object.prototype.customExtend = function(p