ArthurWangCN / notepad

reading notepad
0 stars 2 forks source link

重学前端:类型相关 #9

Open ArthurWangCN opened 2 years ago

ArthurWangCN commented 2 years ago

JavaScript 语言规定了 7 种语言类型。语言类型广泛用于变量、函数参数、表达式、函数返回值等场合。根据最新的语言标准,这 7 种语言类型是:Undefined、Null、Boolean、String、Number、Symbol、Object。

ArthurWangCN commented 2 years ago

Q:为什么给对象添加的方法能用在基本类型上?

A:

ArthurWangCN commented 2 years ago

Q:0.1 + 0.2 为什么不等于 0.3? A:计算机中的数字都是以二进制存储的,如果要计算 0.1 + 0.2 的结果,计算机会先把 0.1 和 0.2 分别转化成二进制,然后相加,最后再把相加得到的结果转为十进制 。0.1 和 0.2 在转换为二进制时就发生了一次精度丢失,而对于计算后的二进制又有一次精度丢失 。

总结:非整数的Number类型无法用==(===也不行) 来比较,因为有可能会发生精度丢失。

精度丢失解决:正确的比较浮点数的方法是,检查等式左右两边差的绝对值是否小于最小精度。

Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON;  // true