javascript中的数字【详解】

前言

程序中主要是对数据的操作,而明白数值,才可以更好的对数据操作。
通过这篇文章,你会对javascript中的数字原理进行更深入的了解。

1.数字

深入理解数字的基础:javascript数字类型是通过IEEE 754 标准来实现的。

2.数字的语法

数字值可以调用Number中的prototype()中的方法,例如:toFixed()toPrecision()

var a = 42.6;
console.log(a.toFixed(1));//42.6
console.log(a.toFixed(2));//42.60
console.log(a.toFixed(3));//42.600
console.log(a.toFixed(4));//42.6000

console.log(a.toPrecision(1));//4e+1
console.log(a.toPrecision(2));//43
console.log(a.toPrecision(3));//42.6
console.log(a.toPrecision(4));//42.60

数字的十六进制、八进制、二进制:0x 0o 0b

3.较小的数值(0.1+0.2问题)

0.1+0.2 === 0.3 //false问题

计算机本质是二进制数,而在十进制转化二进制时,会出现无限小数可以使用网上二进制转化器查询0.1和0.2的二进制数

4.(0.1+0.2)问题的解决办法

设置误差值,javascript中是在Number中的EPSILON方法中
对于ES6之前的版本,可以使用 poly fill 解决

//ES6之前的poly fill
if(!Number.EPSILON){
    Number.EPSILON = Math.pow(2,-52); //1位符号位、11位阶码、52位尾数
}
//ES6之后

function numberCloseEnoughToEqual(n1,n2){
    return Math.abs(n1 - n2) < Number.EPSILON;
}

5.深入背后原理

JavaScript中采用的是64位IEEE 754浮点数标准,其中有52位表示尾数,对于一些二进制大于52位的浮点数,通常采用的是截断或其他方法(0舍1入,置1法,直接截断)

6.整数的安全范围

由于javascript中是64位浮点数,所以最大值为1.798e+308

但是最大的安全数字是253 -1,最小的安全数字是-(253 -1)。

对于大于53位的数字,会被补0表示,会丢失一定的精度。

ES6中分别被定义为:Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER

目前较大的数值只能借助相关的工具库!!

7.整数检测

检测是否是整数Number.isInteger()

//polyfill
if(!Number.isInteger){
		Number.isInteger = function(num){
			return typeof num == "number" && num % 1 == 0;
		}
}

检测是否是安全的整数Number.isSafeInteger()

polyfill
if(!Number.isSafeInteger){
	Number.isSafeInteger = function(num){
        return Math.abs(num) <= Number.MAX_SAFE_INTEGER;
    }
}
  • 32
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小井

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值