TypeScript类型之Number,(小数圆整)
TypeScript类型之Number,(小数圆整)
TypeScript类型之Number,(小数圆整)
TS的类型中Boolean属于是最简单,所以就不打算写了。
首先,我们要了解几个概念:
(1)在JS/TS中0.1+0.1!=0.2,
(2)js中的Number如何编码
(3)上溢和下溢
(4)Number.Epsion (圆整阈值)
在JS中Number是用IEEE 753标准,用binary64编码将数字便是为64位浮点数【64bit】
同时还定义了一些特殊的值:NaN,正无穷,负无穷,

那么为什么0.1==0.000000005555呢?因为js在比较的时候会进行小数的圆整。
上溢和下溢:

在js中如果数值超过了binary64的最大值或者最小值,就会直接归零
要注意了,在js中整数和小数用的是同一套的编码。
但是小数相加出现的是表示问题(圆整)
整数相加出现的是上下溢出
首先,从简至繁,从易到难。
整数:
Number.isSafeInteger()
方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。
BigInt类型,可以表示无限大整数的类型
小数:
关于圆整的再次说明:
高中的时候,我们一定做过一道题:1/2+1/4+1/8++++++++1/(2^n),n +∞
这道数学题的答案是1,但是大家都知道它根本不是一,而是一个无限接近1的结果。
这就和上面小数的表示误差差不多,你实际上无法完美表示0.25--0.5之间的0.4,你只能无限接近。
为此,JS给了一个Number.EPSION



2023-8-24 惠晴_GD