欢迎光临散文网 会员登陆 & 注册

TypeScript类型之Number,(小数圆整)

2023-08-24 11:06 作者:惠晴GD  | 我要投稿

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.1!=0.2

那么为什么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






TypeScript类型之Number,(小数圆整)的评论 (共 条)

分享到微博请遵守国家法律