No more than code.
数字 Number
| parseInt()
parseInt(string,radix) => 解析字符串,返回整数
string : 必选,被解析字符串
radix: 可选,要解析的数字的基数(2-36;把各进制字符串转换成整数)
- 会自动忽略str前空格,找到第一个非空字符。
parseInt(" 12.11")
=> 12
parseInt(" 1 2.11")
=> 1
- 若第一个字符不是数字,则返回NaN。
parseInt("abc")
=> NaN
parseInt("")
=> NaN
parseInt()
=> NaN
- 若第一个字符为数字,则继续解析第二个字符,直至解析完或解析至非数字字符。
parseInt("1abc")
=> 1
- 若第二个参数为0、undefined、null,则直接忽略。
parseInt(11,null)
=> 11
parseInt(11,undefined)
=> 11
parseInt(11,0)
=> 11
- 若第二个参数<2 或者>36,则返回 NaN。
parseInt('10', 37)
=> NaN
parseInt('10', 1)
=> NaN
- 如果string包含对于指定进制(radix)无意义的字符,则返回NaN。
parseInt('1', 2)
=> 1
parseInt('2', 2)
=> NaN
parseInt('023', 2)
=> 0
- 当radix为0或未设置,根据string判断数字基数。
- 以1 ~ 9的数字开头,解析为十进制的整数;
- 以”0x”开头,把其余部分解析为十六进制整数;
parseInt("0x11")
=> 17 - 以0开头,把其后的字符解析为八进制或十六进制的数字;
parseInt(011)
=> 9注意:
parseInt("011")
=> 11
数字限制
-
当小数点后0的个数>5:
parseInt(0.000001)
=> 0
parseInt(0.0000001)
=> 1 (1e-7)
parseInt('0.0000001')
=> 0 -
当小数点前数字位数大于21:
parseInt(100000000000000000000)
=> 100000000000000000000
parseInt(1000000000000000000000)
=> 1
parseInt('1000000000000000000000')
=> 1e+21
注意:1中小数点后计算0的个数;2中计算小数点前的位数,可为任意数;
实例
["1", "2", "3"].map(parseInt)
输出什么?
解析:
["1", "2", "3"].map(parseInt)
等同于调用了三次parseInt方法:["1","2","3"].map(function(ele,index){ return parseInt(ele,index) })
parseInt(“1”,0) => 基数为0时,按照上边陈述即为10进制,返回 1
parseInt(“2”,1) => 基数为1,不在2-36范围内,默认输出NaN
parseInt(“3”,2) => 基数为2,因为字符串3大于基数不合法,解析为NaN
答案:[1, NaN, NaN]
| parseFloat()
parseFloat() => 解析字符串,返回浮点数
- 一个参数
- 解析以数字开头的字符串(非数字部分省略)
- 第一个字符非数字,则返回NaN
- 可以将字符串转换成浮点数,第二个小数点后无效
-
字符前0省略
parseFloat('12ab')
=> 12
parseFloat('a123')
=> NaN
parseFloat('00123')
=> 123
parseFloat('0')
=> 0
parseFloat('123.213')
=> 123.213
parseFloat('123.213.213')
=> 123.213
parseFloat("3.125e7")
=> 31250000
parseFloat('')
=> NaN
parseFloat('0x11')
=> 0
parseFloat('011')
=> 11
parseFloat(011)
=> 9
注意:
parseInt()
和parseFloat()
函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有数字字符组成的数字。如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。- 使用运算符
"+"
将字符串转换成数字,只要字符串中含有无法被解析成数字的字符,该字符串都将被转换成 NaN。
+123abc
=> NaN
parseInt('123abc')
=> 123
parseInt('123abc')
=> 123
parseInt('abc')
=> NaN
parseInt('abc')
=> NaN
| Number()
用于任何数据类型转换成数值。
- 若为Boolean值,true和false将分别转换为1和0。
parseInt(true)
=> 1
parseInt(false)
=> 0
- 若为null值,返回0。
parseInt(null)
=> 0
- 若为undefined,返回NaN。
parseInt(undefined)
=> NaN
- 若字符串为空,则将其转换为0。
Number("")
=> 0
- 若首位字符为非数字,则返回NaN。
parseInt("abc")
=> NaN
- 如果字符串中包含浮点格式,如”1.1”,则将其转换为对应的浮点数值。
parseInt("11.11")
=> 11.11
- 如果字符串中包含有效的十六进制、八进制格式,则将其他转换为相同大小的十进制整数值。
Number('0xf')
=> 15
Number(011)
=> 9
Number('011')
=> 11
| 其他
获取指定范围内的随机整数
function getRadomNum(min,max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
优雅的表示大数字
// All the below will evaluate to true
1e0 === 1;
1e1 === 10;
1e2 === 100;
1e3 === 1000;
1e4 === 10000;
1e5 === 100000;
Longhand:const obj = { x:x, y:y };
Shorthand:const obj = { x, y };
~~ 和 |0
Longhand: Math.floor(4.9) === 4 //true; //parseInt
Shorthand: ~~4.9 === 4 //true
var foo = (12 / 4.13) | 0; //结果为2
千分位
Vue.prototype.$thousandsNum = function(num){
return num.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
}