JavaScript基础--数字篇
在js使用中有两种数字类型,一种是我们平时所知道的数字类型,1,2,3,45等,另一种是BigInt,因为在js使用中当数字超过16位就会失精,后面的全都是零。因此出现了BigInt这种类型来表示任意长度的整数。
编写数字的方法
常规我们编写数字就是输入数字的具体内容,比如let num=123这样,但是当我们遇到表大/小的数值的时候,可以使用e来编写,当为正整数的时候e表示后面有几个0,当为小数时e后面的数字n表示小数点后多少位,或者说小数点后面n-1个0
let num = 10000000000
let num2 = 1e10
let num3 = 0.000001
let num4 =1e-6
console.log(num === num2)//true
console.log(num3,num4)//
提高数字的可读性,我们可以使用_来表示分割,
let num = 10000000000
let num2 = 1_000_000_000_0
console.log(num === num2)//true
进制
数字有二进制,十进制,十六进制。二进制不咋用,十进制就是我们日常使用的数字,十六进制只在写css的时候设置颜色使用。如果有大神看到麻烦给补充下谢谢。
toString()
语法:num.toString(base)
base:可选,表示要转换的进制,如果没有填写会把数字转成字符串
let num = 10000000000
console.log('转换16进制'+num.toString(16),"转换成了字符串"+num.toString()+1)
//转换16进制2540be400 转换成了字符串100000000001
舍入
对于数字类型最常用的就是舍入
Math.floor
向下舍入,不管小数点后面的多大都是舍弃掉小数点,如果是负数就会变成更小的负整数
let num = 2.1
let num1 = -2.1
let num2 = 2.9
let num3 = -2.9
console.log(Math.floor(num))//2
console.log(Math.floor(num1))//-3
console.log(Math.floor(num2))//2
console.log(Math.floor(num3))//-3
Math.ceil
向上舍入,不管小数点后面是多大都会舍弃掉小数点,如果是负数就变成更大的负整数
let num = 2.1
let num1 = -2.1
let num2 = 2.9
let num3 = -2.9
console.log(Math.ceil(num))//3
console.log(Math.ceil(num1))//-2
console.log(Math.ceil(num2))//3
console.log(Math.ceil(num3))//-2
Math.round
四舍五入
let num = 2.1
let num1 = -2.1
let num2 = 2.9
let num3 = -2.9
console.log(Math.round(num))//2
console.log(Math.round(num1))//-2
console.log(Math.round(num2))//3
console.log(Math.round(num3))//-3
Math.trunc
舍弃小数
let num = 2.16
let num1 = -2.11
let num2 = 2.91
let num3 = -2.93
console.log(Math.trunc(num))//2
console.log(Math.trunc(num1))//-2
console.log(Math.trunc(num2))//2
console.log(Math.trunc(num3))//-2
toFixed()
语法:num.toFixed(n)
n:可选,表示保留的小数位数,有四舍五入逻辑,如果位数比实际值要多,则在多余部分添加0
let num = 2.16
let num1 = -2.1139484
let num2 = 2.9121333
let num3 = -2.931
console.log(num.toFixed(1))//2.2
console.log(num1.toFixed(3))//-2.114
console.log(num2.toFixed(5))//2.91213
console.log(num3.toFixed(6))//-2.931000
说到舍入就不得不提到一种特殊的存在了。0.1+0.2!=0.3,会变成0.30000000000000004。
这是因为数字是以二进制储存在内存里,而0.1和0.2在二进制里相当于3/10这样无限循环的小数。这种情况很经常遇到,尤其是商城系统里,购物车或者结算里。测试两个商品结果一结算好长的一串数字。其实把0.1的小数展示出来就会发现,0.1.toFixed(20)//0.10000000000000000555。这时候我们就可以使用舍入或者toFixed方法将不必要的舍弃掉。不要想着乘10或者100的方式,表示已经试过了。该失精的还是失精。
NaN
特殊的数字类型,是一个独一无二的数字类型,不等于任何值,包括他自己。比如我们使用Number方法转换一个字符串'str'。就会得到一个NaN。代表的是非数字的数字。
NaN有一个判断方法,isNaN
Infinity
Infinity表示正无穷的数值,无限大,-Infinity表示负无穷,无限小。
isFinite
isFinite(n)
n:必选,需要判断的值,该方法判断参数是否是数字类型。如果是返回true,否则返回false
parseInt()
语法:parseInt(val)
val:必须,需要转换或者提取的参数,
parseInt方法返回一个整数,当遇到了包含数字和其他字符的时候会提取到整数并返回
let num = 2.16
let num1 ='1234#'
let num2 = '2.9121333'
let num3 = 'asdasd2.931'
let num4 = Infinity
console.log(parseInt(num))//2
console.log(parseInt(num1))//1234
console.log(parseInt(num2))//2
console.log(parseInt(num3))//NaN
console.log(parseInt(num4))//NaN
parseFloat()
语法:parsrFloat(val,base)
val:必选,需要转换或者提取的参数,
base:可选,可以规定返回进制
parseFloat方法返回一个浮点数,支持小数点。
let str = 'Holleh Badgay2'
let strNum = '30abc'
let strNum1= '30.001'
let strNum2 = '0x10'
console.log(parseFloat(strNum))//30
console.log(parseFloat(strNum1))//30.001
console.log(parseFloat(strNum1))//30.001
console.log(parseFloat(strNum2))//0
console.log(parseFloat(str))//NaN
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!