数值0.2存储在js中是以双精度17位存储的,但是我们使用0.2进行计算的时候,底层是按照双精度进行计算的,最后展示的结果是要表示为人能读懂的结果,而一旦要显示这个结果就一定要经过就必须做 double → 字符串展示。这里的字符串和数据类型的字符串不是一回事,而是展示环节的字符串。在js底层时候,会先将双精度变为string类型进行截取展示,string 是在需要「变成文本」的时候才临时造出来的用来显示的。但是参与的运算和存储都是number类型。
我是不是可以理解为,0.1 + 0.2 === 0.30000000000000004,是因为这个0.1 + 0.2得到的结果在二进制位的表述和floatparse("0.30000000000000004")的二进制表示是完全一致的,所以我们看到的显示十进制结果是:0.30000000000000004。因此在js中0.1 + 0.2 的二进制存储结果等价于小数值为0.30000000000000004的二进制存储结果。