百度复制来的
js中的数字都是用浮点数表示的,并规定使用IEEE 754 标准的双精度浮点数表示。
IEEE 754 规定了两种基本浮点格式:单精度和双精度。
IEEE单精度格式具有24 位有效数字精度(包含符号号),并总共占用32 位。
IEEE双精度格式具有53 位有效数字精度(包含符号号),并总共占用64 位。
十进制0.1 => 二进制0.00011001100110011…(循环0011) =>尾数为1.1001100110011001100…1100(共52位,除了小数点左边的1),指数为-4(二进制移码为00000000010),符号位为0 => 计算机存储为:0 00000000100 10011001100110011…11001 => 因为尾数最多52位,所以实际存储的值为0.00011001100110011001100110011001100110011001100110011001 而十进制0.2 => 二进制0.0011001100110011…(循环0011) =>尾数为1.1001100110011001100…1100(共52位,除了小数点左边的1),指数为-3(二进制移码为00000000011),符号位为0 => 存储为:0 00000000011 10011001100110011…11001 因为尾数最多52位,所以实际存储的值为0.00110011001100110011001100110011001100110011001100110011 那么两者相加得: 0.00011001100110011001100110011001100110011001100110011001 + 0.00110011001100110011001100110011001100110011001100110011 (确认??) = 0.01001100110011001100110011001100110011001100110011001100 转换成10进制之后得到:0.30000000000000004